我正在尝试替换div中的文本,该文本会在单击链接时动态添加到对话框元素中。
var feedBackDialog;
if(!feedbackDialog){
$(".feedback_link").click(function() {
//set contents of the dialog 'feedback-dialog'
$.get("/users/feedback", null, function(result) {
feedBackDialog = $("#feedback-dialog").html(result). //set html content during callback
attr('title', title).
dialog({ autoOpen: true, width: 560, modal: true
});
});
}
else
{
feedbackDialog.dialog({ autoOpen: true, width: 560, modal: true });
}
//change the text in the newly created element.
$('#feedback-label').text($(this).attr('feedback_desc'));
我正在提取的html中存在标识为feedback-label
的元素。但是,最后一行的$('#feedback-label')
不起作用,因为DOM尚未刷新。
我尝试过$("#feedback-dialog").find('#feedback-label')
,但这似乎并不一致。有谁知道获得这个新创建的元素的好方法?
我知道我可以简单地用内容替换html <div id="feedback_label"></div>
的字符串,但我看起来更好。
答案 0 :(得分:3)
这不是因为dom没有被刷新,这是因为你正在制作一个尚未完成的AJAX请求。将代码行添加到成功回调中,您应该是金色的:
$.get("/users/feedback", null, function(result) {
$("#feedback-dialog").html(result).attr('title', title).dialog({ autoOpen: true, width: 560, modal: true });
$('#feedback-label').text($(this).attr('feedback_desc'));
});
答案 1 :(得分:2)
将最后一行移动到$.get
的回调函数,因为只有在Ajax调用完成后才会准备好内容:
$.get("/users/feedback", null, function(result) {
$("#feedback-dialog").html(result). //get HTML
attr('title', title).
dialog({ autoOpen: true, width: 560, modal: true });
$('#feedback-label').text($(this).attr('feedback_desc')); //change the text in the newly created element.
});