2012-11-18 124 views
0

我用这样一个jQuery模态对话框:点击按钮来获得DIV ID jQuery的模态对话框

<div class="dialog-form" id="dialog-form1" title="Edit Invoice"> 
<form> 
.... inputs & selects 
</form> 
</div>    
<button class="dialog-button">Edit</button> 

该按钮的功能如下:

$(".dialog-button").button().click(function() { 
alert ($(this).prev("div").attr("id")); 
}); 

所有我现在要做的是得到前面的div的ID(我将按钮更改为类而不是ID,因为我在同一页上放置了几个不同的弹出窗体)。所以它应该返回“dialog-form1”。但无论我尝试它不能找到以前的股利的ID,它只是返回“未定义”...

任何想法?谢谢你的帮助!

回答

0

jQuery的用户界面对话框窗口小部件的变化,并与形式在DOM移动你的DIV在它到一个单独的地方 - 造成你“prev”逻辑找不到它。

这是当我想你的例子,得到了写给我的DOM HTML:

<div class="dialog-form ui-dialog-content ui-widget-content" id="dialog-form1" style="width: auto; min-height: 103.03333330154419px; height: auto;" scrolltop="0" scrollleft="0"> 
<form> 
<!-- .... inputs & selects --> 
</form> 
</div> 

为了证明这一点,不要实例上的“对话框的Form1的” ID对话框控件和运行脚本。它会发现它。

我会尝试打你的DIV,你想找到并按类选择(而不是使用“prev”)的类。像这样的东西...

<div class="dialog-form" id="dialog-form1" class="my-dialog-i-want" title="Edit Invoice"> 
<form> 
<!-- .... inputs & selects --> 
</form> 
</div>    

$(".dialog-button").on("click", function(e) { 
    var myDiv = $("div.my-dialog-i-want"); 
    alert (myDiv.attr("id")); 
}); 

希望这对我有所帮助。

+0

省长,感谢您的帮助! 你解决了这个问题,但实际上我做的稍微有点不同 - 因为我不确定jQuery如何移动div,所以如果我在同一页面上有多个弹出窗体,如果按类搜索,它可能找不到合适的窗体。 所以我添加的ID到按钮 <按钮ID =“按钮对话框的form1的”类=“对话框的按钮”>编辑 我会改变这个每次以匹配在div我需要的id (所以button-dialog-form2等)然后在函数中我可以找到这样的正确的div ID temp_divid = $(this).attr(“id”)。substring(7); – Matt

+0

太好了,马特。很高兴我可以帮助你。 – dgestep

0

下面替换您的jQuery脚本:

$(".dialog-button").click(function() { 
    alert ($(this).prev("div").attr("id")); 
});​ 

直播DEMO

+0

我试过了,但它给出了同样的问题(“undefined”) – Matt

+0

为了您的方便,我添加了演示链接。请让我们知道它是否也适用于您... – salih0vicX