清一色 我知道这已被问过,但以前的解决方案似乎并不适用于我的情况。
我有一个简单的表,每行有许多记录,最后一列是删除超链接。我正在尝试使用该对话框弹出并确认删除。如果我使用对话框所在的div的显式名称(我将它恰好位于表所在的div上方的一个div),这可以完美地工作。我首先使用一个破坏似乎解决了“只打开一次”的问题,只要我命名对话框div。我正在尝试将代码通用化,所以我宁愿远离显式命名对话框所在的div,而是参考prev div。这是第一次使用,但后续点击不会:
<code>
$(".deleteLinkDiag a").livequery('click',function() {
var myParent = $(this).parents("div:eq(0)"); //container div to be replaced
var myDiag = $(myParent).prev("div"); //one div before container div
var urlLoad = $(this).attr("href");
$(myDiag).dialog('destroy');
$(myDiag).dialog({
bgiframe: true,
resizable: false,
height:140,
modal: true,
autoOpen: false,
overlay: {
backgroundColor: '#000',
opacity: 0.5
},
buttons: {
"Confirmz":function()
{
myParent.load(urlLoad, function() { });
$(this).dialog("close");
},
Cancel: function()
{
$(this).dialog("close");
}
},
//close: function(ev, ui) { $(this).dialog('destroy');}
});
$(myDiag).dialog('open');
return false;
});
</code>
有什么想法吗?
答案 0 :(得分:2)
好的,所以希望这会有所帮助。我实际上遇到了两个问题:
我通过将对话框的名称设置为与调用div相同来附加“Diag”来解决这个问题。然后我可以跟踪它,无论jquery把它放在哪里。呼。
$(".deleteLinkDiag a").livequery('click',function() {
var urlLoad = $(this).attr("href");
var myParent = $(this).parents("div:eq(0)"); //container div to be replaced
var myDiag = myParent.attr('id') + 'Diag';
$("#" + myDiag).dialog({
bgiframe: true,
resizable: false,
height:140,
modal: true,
autoOpen: false,
overlay: {
backgroundColor: '#000',
opacity: 0.5
},
buttons: {
"Confirm":function()
{
myParent.load(urlLoad, function() { });
$(this).dialog("close");
},
Cancel: function()
{
$(this).dialog("close");
}
},
close: function(ev, ui) {
$(this).dialog("destroy");
}
});
$("#" + myDiag).dialog('open');
return false;
});
答案 1 :(得分:0)
问题似乎很可能是因为实际上没有正确选择实际的对话框div。而且(据我了解情况而言)源于你的错误要求的更大问题。
如果要引用特定div,则应引用该特定div。然而,我听说你想引用一个特定的div(它实际上是唯一用作对话框的div),同时你说你害怕通过ID引用该div。
基本上,如果只有一个div用作对话框,那么接受它并只是将该div命名为:
<div id="dialog"/>
myDiag = $('#dialog');
这样就不会混淆你是否选择了正确的div。
但是,如果由于某种原因我所说的不是一个选项,那么您可以在指定myDiag
的位置设置firebug中的断点,以便您可以看到myDiag
实际上是什么执行时间。