jquery选择兄弟姐妹’直到’

我有一个DOM的forms

...

我知道这是不对的,正确的方法是改革HTML,但我们说这是不可能的。

我怎样才能让jquery选择一个父母的所有孩子(即选择所有.children直到.parent)

jQuery 1.4现在有.nextUntil(选择器)function:

  $('div.parent').toggle( function() { $(this).nextUntil('div.parent').hide(); }, function() { $(this).nextUntil('div.parent').show(); } ); 

您可以遍历nextAll div兄弟元素直到找到以下.parent ,请检查以下示例 :

 $('.parent').click(function() { $(this).nextAll('div').each(function() { if ($(this).is('.parent')) { return false; // next parent reached, stop } $(this).toggleClass('highlight'); }); }); 

标记使用:

 
parent 1
child
child
parent 2
child
parent 3
child
child
child

*请参阅@foson回答jquery 1.4+ *

看看Ben Almans 直到utils 。

它为您提供了3种有用的方法:nextUntil,prevUntil,parentsUntil。

我认为不需要上面的自定义函数,JQuery通过nextUntil(selector, filter)函数支持这个function,但是你应该添加filter,只将脚本应用于过滤后的元素而不是所有下一个元素:

 //hide all .child elements $('div.child').hide(); $('div.parent').click(function() { //Toggle (show or hide) only .child elements until finding .parent element. $(this).nextUntil('div.parent', 'div.child').slideToggle('slow'); }); 
Interesting Posts