2015-01-07 36 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