4

我想知道如何隐藏所有元素,直到找到第一个<hr/>. 然后循环应该停止

    <div class='row-father'>
   <legend> Title here </legend>
        <div class="row-fluid">...</div>
        <div class="row-fluid">...</div>
        <hr/>
        <div class="row-fluid">...</div>
        <div class="row-fluid">...</div>
        <div class="row-fluid">...</div>
        <div class="row-fluid">...</div>
        <hr/>
        <div class="row-fluid">...</div>
        <div class="row-fluid">...</div>
        <hr/>
    </div>

...

$('.row-father').find('*').each(function(){
    if ($(this) != '<hr/>')
        $(this).hide();
});
4

4 回答 4

9

使用这个:$('.row-father > hr:first').prevAll(':not(legend)').hide();http://api.jquery.com/prevall/

于 2013-01-28T15:01:08.137 回答
1

您可以使用.is('hr').

代码:

$('.row-father').find('*').each(function() {
     if (!$(this).is('hr')) {
         $(this).hide();
     }
     else {
         return false;
     }
});

示例可以在这里找到。

于 2013-01-28T15:08:54.150 回答
1

$('.row-father').find('hr').eq(0).prevAll('.row-fluid').hide();

演示

于 2013-01-28T15:24:14.683 回答
0

你也可以使用

$('.row-fluid:first').nextUntil("hr").andSelf().hide();

http://jsfiddle.net/gDGmX/3/

编辑:

如果要替换<hr/>为包含文本的 div,例如:

   <div class='row-father'>
   <legend> Title here </legend>
        <div class="row-fluid">...</div>
        <div class="row-fluid">...</div>
        <div>test</div>
        <div class="row-fluid">...</div>
        <div class="row-fluid">...</div>
        <div class="row-fluid">...</div>
        <div class="row-fluid">...</div>
        <hr/>
        <div class="row-fluid">...</div>
        <div class="row-fluid">...</div>
        <hr/>
    </div>

你可以试试这段代码:

$('.row-fluid:first').nextUntil("div>:contains('test')").andSelf().hide();
于 2013-01-28T15:08:20.717 回答