我有这个 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 的其余部分执行,第一行 scoretotal 工作正常,它确实会改变这个分数...ONCE 任何后续的新商店,它只是不再更新或替换......
不仅如此,按钮
<button id="score-popup"><%= @document.score %></button>
上面的 jquery 甚至 .prop 的值都不会改变我不知道为什么这会如此不稳定......这是视图中的其余代码:
<div id="element_to_pop_up" class="bobsyouruncle">
<a class="bClose">x</a>
<table cellpadding="10">
<tr>
<th colspan="3">OVERALL EVALUATION RATING</th>
</tr>
<tr>
<td colspan="3" id="scoretotal">Total Evaluation Score: <%= @document.score %></td>
</tr>
...etc...
</table>
</div>
所以我认为我在做一些愚蠢的事情,这一切都在执行,甚至是某种工作(总分改变了一次,之后不再有一次,并且分数弹出窗口永远不会改变......这与这篇文章有关吗:
??
编辑:我确实通过这样做使按钮工作:
$('#score-popup').html(encoded.scores[0])
(显然是因为它是一个 html 按钮)并且有效,尽管其余代码仅在第一次执行时才有效,随后的代码不会更改数据,也许我抓住了错误的东西?或者没有用 replaceWith 正确改变它?