我正在创建一个对话框来显示长时间运行的进程的状态。基本上,我想创建对话框,并在长时间运行的进程执行时更新内容。我仍然是jQuery / jQuery UI的新手,所以我可能做了一些愚蠢的事,但我不明白为什么以下不起作用:
function updateStatus() {
$('#status').html("Interval status!");
$('#message').html("message status!");
}
...
var $updateDialog = $('<div id="updateDialog"></div>')
.html('<table><tr><td id="status">Status goes here ...</td></tr> <tr><td> </td></tr> <tr><td id="message">Message goes here ...</td></tr> </table>')
.dialog({
title: 'Update Progress',
modal: 'true',
buttons: { "OK" : function() {
$(this).dialog("close");
clearInterval(interval);
}
}
});
interval = setInterval(updateStatus, 1000);
当调用updateStatus时,我希望看到&lt; td&gt;元素已更新为新值,但内容未更改。如果我执行类似$('#status')。html()的操作并将其写入控制台,则表明 已更改;但是在对话框中看不到变化。
但是,如果我完全替换对话框的整个html(),则对话框的内容可见。
$('#updateDialog').html('<table><tr><td id="status">Interval Status ...</td></tr> <tr><td> </td></tr> <tr><td id="message">Interval message ...</td></tr> </table>')
如果可以的话,我宁愿使用更多“外科手术”的方法更新个别元素。有人能告诉我我在这里缺少什么吗?
答案 0 :(得分:1)
这是因为您实际上并未将TABLE添加到DOM。你将它添加为DIV的html(),我认为它不是真的相同。一旦你创建了你的div,你应该将它附加到DOM(例如$('body')。append(whatever))然后你应该以相同的方式将你的表附加到'what'。
然后它应该工作。