jQuery正确执行但只进行一次更改
我有这个rails3应用程序,在每次用户选择分数…(提交表单。)时,我想要更新的弹出div中显示得分,计算得分并在AJAX中返回。 这有效,我可以在以下JavaScript中放置一个断点:
$('#eval_form') .bind("ajax:beforeSend", function (evt, xhr, settings) { xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script) }) .bind("ajax:success", function (evt, data, status, xhr) { var $response = xhr.responseText var encoded = jQuery.parseJSON($response) $('#scoretotal').replaceWith('Total Evaluation Score: ' + encoded.scores[0]) //also change button text $('#score-popup').attr('value', 'testing value') }); });
encoded.scores[0]
和`encoded.scores [1]等于他们想要的。 jQuery的其余部分执行,第一行得分总计工作正常,它确实会改变那个分数……随后新商店的任何时候,它只是不更新或不再替换…
不仅如此,还有按钮
值不会随着上面的jquery甚至是.prop而改变我不知道为什么这样做会让人感到不安…这里是视图中的其余代码:
x OVERALL EVALUATION RATING Total Evaluation Score: ...etc...
所以我认为我做了一些愚蠢的事情,一切都在执行,甚至是一些有效的工作(得分总数发生了变化,之后不再发生一次,并且得分弹出窗口永远不会改变……这与这篇文章有关:
jQuery Ajax只执行一次,但似乎每次都应该调用
??
编辑:我确实通过这样做得到了按钮:
$('#score-popup').html(encoded.scores[0])
(显然是因为它是一个html按钮)并且有效,尽管其余的代码只是第一次执行它的后续执行,它只是不会改变数据,也许我抓错了? 或者不用replaceWith正确地改变它?
您正在用其他东西替换整个表格单元格,因此在第一次没有表格单元格之后。
仅包含span标记中的动态值:
Total Evaluation Score: <%= @document.score %>
然后分配其内部文本:
var $response = xhr.responseText; var encoded = jQuery.parseJSON($response); $('#lbDocumentScore').text(encoded.scores[0]);