我的html中有这种设置
<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();
答案 0 :(得分: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();
});
除非你动态添加内容,否则它们应该有效。如果动态添加,请使用on()
$('.normal').on('click', '.toggle-advanced', function(){
$(this).parents('.grp').find('ul.advanced').toggle();
});
答案 1 :(得分:1)
.advanced
不是.grp
元素的兄弟,它是父.normal
元素的兄弟
$(@).closest('.normal').siblings('.advanced').slideToggle();
javascript等于
$('.normal').on('click', '.toggle-advanced', function(){
$(this).closest('.normal').siblings('.advanced').slideToggle();
})
答案 2 :(得分:1)
你可以试试这个
$(".toggle-advanced").on('click', function(){
$(this).closest(".normal").siblings('.advanced').slideToggle();
});
此代码基于jquery
答案 3 :(得分:1)
这应该有用。
$("ul.normal>li>button").click(function () {
$(this).closest('.normal').siblings('.advanced').slideToggle();
});
答案 4 :(得分:1)
在Jquery中,您可以使用父和兄弟函数来获取所需的元素。
试试这个:
$('.toggle-advanced').click(function() {
$('this').parent().siblings().toggleSomething()
});
兄弟姐妹返回给定元素的所有兄弟姐妹,在您的情况下,它将始终返回“高级”ul。