2013-06-28 109 views
0

我有這樣的設置在我的HTML運行到元素最接近元素點擊jQuery的

<section class="grp"> 
    <ul class="normal"> 
    <li>Normal Thing <button class="toggle-advanced">toggle advanced</button></li> 
    </ul> 
    <ul class="advanced"> 
    <li>This is Advanced</li> 
    </ul> 
</section> 
<h1>Another Thing</h1> 
<section class="grp"> 
    <ul class="normal"> 
    <li>Normal Thing <button class="toggle-advanced">toggle advanced</button></li> 
    </ul> 
    <ul class="advanced"> 
    <li>This is Advanced</li> 
    </ul> 
</section> 

我怎樣才能切換「高級」 ul如果我點擊在ul.normal按鈕?

我試過像這樣的CoffeeScript

$('.normal').on 'click', '.toggle-advanced', (e) -> 
    $(@).closest('.grp').siblings('.advanced').slideToggle(); 

回答

2

因爲jQuery是標記...使用jQuery

$('.toggle-advanced').click(function(){ 
    $(this).parents('ul.normal').siblings('ul.advanced').toggle(); 
}); 

$('.toggle-advanced').click(function(){ 
    $(this).parents('.grp').find('ul.advanced').toggle(); 
}); 

這些都應該工作,除非你AREE添加動態內容如果動態添加,請使用on()

$('.normal').on('click', '.toggle-advanced', function(){ 
    $(this).parents('.grp').find('ul.advanced').toggle(); 
}); 
+0

我用了第三個。 –

+0

很酷...很高興它幫助..快樂編碼.. – bipen

1

.advanced不是.grp元素的兄弟姐妹,這是父母的兄弟姐妹.normal元素

$(@).closest('.normal').siblings('.advanced').slideToggle(); 

的JavaScript等於將

$('.normal').on('click', '.toggle-advanced', function(){ 
    $(this).closest('.normal').siblings('.advanced').slideToggle(); 
}) 
1

你可以試試這個

$(".toggle-advanced").on('click', function(){ 

    $(this).closest(".normal").siblings('.advanced').slideToggle(); 

}); 

這段代碼是基於jquery的

1

這應該有效。

$("ul.normal>li>button").click(function() { 
    $(this).closest('.normal').siblings('.advanced').slideToggle(); 
}); 

工作例如:http://jsfiddle.net/riri78/dQcFE/

+0

如果我點擊任何在ul它切換..,切換必須來自按鈕 –

+0

正確。修正了。 – Riri

1

在jQuery中,你可以使用兄弟姐妹函數來獲得所需的元素。

試試這個:

$('.toggle-advanced').click(function() { 
    $('this').parent().siblings().toggleSomething() 
}); 

兄弟姐妹返回給定元素的所有兄弟姐妹,而你的情況總是會返回「先進」 UL。