我有一系列链接,当我点击链接时,我想显示一个包含详细信息的对话框。此详细信息从jquery ajax请求返回。
我使用下面的代码通过ajax在jquery对话框中显示部分结果。
这是jquery代码:
$(document).ready(function() {
$('a.click').live('click', function() {
var url = '/Tracker/Info?id=' + $(this).attr("id");
var dialogOpts = {
modal: true,
bgiframe: true,
autoOpen: false,
height: 600,
width: 450,
overlay: {
opacity: 0.7,
background: "black"
},
draggable: true,
resizeable: true,
open: function() {
//display correct dialog content
$("#dialogDiv").load(url);
}
};
$("#dialogDiv").dialog(dialogOpts); //end dialog
$("#dialogDiv").dialog("open");
});
});
这是我的控制器操作代码:
public ActionResult Info(int id)
{
return PartialView("LabelPartialView", _Repository.GetItem(id));
}
问题在于:
当我第一次点击这个时(假设我发送id = 1234)它可以正常工作 当我点击另一个项目(假设我发送id = 4567)时,它仍显示1234的内容 我再次点击第二个项目(再次是4567),然后它将显示4567的内容。
有谁知道为什么第一次可能不会刷新?这是时间问题吗?
答案 0 :(得分:0)
在显示每个模态后,您需要确保完全摧毁#dialogDiv。
在为要显示的每个对话框重复使用相同的div时,我遇到了同样的问题。
我忘记了我的头脑,但在定义你的dialogOpts时添加如下内容:
close: function() { $("#dialogDiv").dialog("destroy"); },
以下是jQuery API参考:http://docs.jquery.com/UI/Dialog
希望这能提供一些见解!
答案 1 :(得分:0)
我想这与你多次创建对话框的方式有关。您可能想尝试在live之外创建对话框。然后根据需要更改对话框内容并重新打开对话框。我通常在这种情况下做的是加载消息,打开对话框然后启动ajax调用来替换内容。这样的事情。
$(function () {
$("#dialogDiv").dialog({
modal: true,
bgiframe: true,
autoOpen: false,
height: 600,
width: 450,
overlay: {
opacity: 0.7,
background: "black"
},
draggable: true,
resizeable: true
});
$('a.click').live('click', function() {
var url = '/Tracker/Info?id=' + $(this).attr("id");
$("#dialogDiv")
.html('Loading')
.dialog("open")
.load(url);
});
});
答案 2 :(得分:0)
我使用.one()方法找到了solution here