2012-11-18 117 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