2015-01-07 49 views
0

我想彈出一個對話框打開使用.closest,但我似乎無法使其工作。jQuery - 對話框使用.closest?

我在這裏擺弄它: http://jsfiddle.net/dx2yz8mg/

$(function(){ 
    $('.prdDetails').click(function() { 
     $('#prdDetails').dialog({ 
      draggable: false, 
      height: 430, 
      modal: true, 
      resizable: false, 
      width: 774, 
     }); 
     return false; 
    }); 
}); 

我已經試過這樣:

$(this).closest('#prdDetails').dialog({ 

我覺得這是好的,但它不工作,有沒有人有任何想法?

我需要這樣做的原因是我動態地拉動內容。目前,當您單擊第二個.prdDetails時,您會在彈出窗口中看到第一個#prdDetails。

+0

使用'$(本).siblings( '#prdDetails')' –

+0

你誤解'.closest()'做了什麼。在這裏閱讀http://api.jquery.com/closest/,但在你的小提琴中,你可能想直接定位ID,因爲ID是獨特的元素。 – Cue

+0

我相信你會誤解['closest()'](http://api.jquery.com/closest/)。它** ** DOM樹。 –

回答

1

認爲你應該使用的最接近下一個代替,

$(this).next('#prdDetails').dialog({ 

接下來會發現眼前的下一個兄弟,而最接近的搜索起來DOM樹。

您還應該刪除多個ID,並檢查您是否已經創建了一個對話框,以避免在每次點擊時發生實例化。這應該是一個完整的解決方案

http://jsfiddle.net/dx2yz8mg/7/

+0

謝謝,這是我第一次運行時想要的。但之後的點擊不起作用。我在這裏refidled它:http://jsfiddle.net/dx2yz8mg/4/任何想法? – Nick

+0

我編輯了小提琴,現在應該爲你工作 –

0

docs,.closest檢查元素本身並遍歷DOM。

你有這樣的:

<a class="prdDetails">More Details ></a> 
<div id="prdDetails" class="hidden">Stuff</div> 

他們是兄弟,不是家長/孩子的。

BTW,你應該使用&gt;代替>

-1

你必須width: 774,您必須刪除,背後width