代码之家  ›  专栏  ›  技术社区  ›  jon skulski

jquery选择兄弟姐妹'until'

  •  10
  • jon skulski  · 技术社区  · 15 年前

    我有一个dom的形式

    <input class="parent"></div>
    <input class="child"></div>
    <input class="child"></div>
    <input class="parent"></div>
    <input class="child"></div>
    ...
    

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

    如何让jquery选择一个父级的所有子级(即选择all.children until.parent)

    4 回复  |  直到 9 年前
        1
  •  19
  •   foson    14 年前

    jquery 1.4现在具有.nextuntil(选择器)功能:

        $('div.parent').toggle(
            function() {
                $(this).nextUntil('div.parent').hide();
             },
            function() {
                $(this).nextUntil('div.parent').show();
            }
        );
    
        2
  •  7
  •   Christian C. Salvadó    15 年前

    您可以迭代 nextAll div 直到找到以下元素 .parent 检查一下 example :

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

    使用标记:

    <div class="parent">parent 1</div>
    <div class="child">child</div>
    <div class="child">child</div>
    <div class="parent">parent 2</div>
    <div class="child">child</div>
    <div class="parent">parent 3</div>
    <div class="child">child</div>
    <div class="child">child</div>
    <div class="child">child</div>
    

        3
  •  6
  •   redsquare    12 年前

    *jquery 1.4见@foson answer+*

    看看本·阿尔曼 until utils .

    它提供了3种有用的方法:nextuntil、prevuntil、parentsuntil。

        4
  •  0
  •   Omar Alahmed    9 年前

    我认为不需要上述自定义函数,jquery通过 nextUntil(selector, filter) 函数,但您应该添加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');
    });