全部-
我知道有人问过这个问题,但以前的解决方案似乎不适用于我的情况。
我有一个简单的表,每行都有许多记录,最后一列是删除超链接。我正在尝试使用对话框弹出并确认删除。如果我使用对话框所在的 div 的显式名称(我将其恰好放置在表格所在的 div 上方一个 div 处),则效果非常好。我首先使用 destroy ,这似乎解决了“只打开一次”的问题,只要我命名对话框 div 即可。我正在尝试通用化代码,因此我宁愿避免显式命名对话框所在的 div,而是引用上一个 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>
有任何想法吗?
好的,希望这能对以后的人有所帮助。我实际上遇到了两个问题:
- 如果你不销毁dialog(),那么它实际上并不以旧名称存在于DOM中。这就是为什么它在第二次时总是未定义的。
- 即使您确实销毁了该对话框,您仍然找不到它。那是因为当对话框理论上将其返回到预初始化状态,这是通过将其放在 DOM 底部的 body 标记之前来实现的。因此,它不再位于“prev”或“prevAll”中。
我通过将对话框的名称设置为与调用 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;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)