【发布时间】:2009-11-25 02:11:43
【问题描述】:
所有- 我知道有人问过这个问题,但以前的解决方案似乎不适用于我的情况。
我有一个简单的表,每行有许多记录,最后一列是删除超链接。我正在尝试使用对话框弹出并确认删除。如果我使用对话框所在的 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>
有什么想法吗?
【问题讨论】:
-
var myDiag = $(myParent).prev("div");是否总是为每个按钮选择不同的 div,还是总是选择相同的 div? -
你能在某处上传一个例子来证明这对你不起作用吗?我发现很难想象
-
当然:163.150.129.104/j/index.php 所以我们的想法是,有两个数据表,每个数据表的每一行都有一个唯一的删除列,每个数据表在表 div 之前都有一个不同的对话框。工程第一次弹出对话框,但不是在那之后。如果我将类的名称放在对话框(“打开”)中,它可以正常工作,但我希望能够只针对一个 div 而不制作该函数的多个副本。
-
只是为了回答 dcneiner 的问题:myDiag 第一次选择了正确的 div。单击链接的所有后续时间都返回未定义。我的猜测是,在打开对话框的过程中,div 在 DOM 中的位置实际上被移动了,所以它不再是“prev”或“prevAll”。奇怪的是我在关闭时运行破坏,所以应该将 div 设置回它以前的位置,使我能够用 prev 抓住它。