当具有某个类时,jquery隐藏两个div之间的div行

时间:2015-03-31 15:24:09

标签: javascript jquery html

<div id="CntWrapper_CntMain_ssm_ctl00_ctl01" class="matrix">
  <div class="CollapseGroup1"></div>
  <div class="row">
    <div class="cell_24">&nbsp;</div>
  </div>
  <div class="row">
    <div class="cell_24">
      <span class="label-passive">text</span>
    </div>
  </div>
  <div class="CollapseGroupClose1"></div>
</div>

我正在尝试操纵上面的HTML代码示例。它是实际HTML代码的简化版本。

<script type="text/javascript">
  $(document).ready(function() {
    $('.CollapseGroup1').nextUntil('.CollapseGroupClose1',').css( "display", "none" );
  });
</script>

此脚本在名为collapsegroup和collapsegroupclose的两个div之间隐藏了所有带有“row”类的div。

但是,我只想隐藏带有'Row'类的div元素,当这些行中的任何一行包含至少一个带有'label-passive'类的span时。

<script type="text/javascript">
  $(document).ready(function() {
    $('.CollapseGroup1').nextUntil('.CollapseGroupClose1','div[.label-passive]').css( "display", "none" );
  });
</script>

只是在有标签被动的跨度时隐藏任何行div都不够好。在这些collapsegroup div之外可以有“label-passive”span类的行,我不想隐藏。

我想隐藏两个collapsegroup标记之间的所有行,即使其中一行实际上有一个带有'label-passive'类的子span元素。

3 个答案:

答案 0 :(得分:0)

所以,在读完你的问题之后......两次...... Trice ..我想你想要这个: (亲提示:尽可能使用伪代码尽可能简化您的问题)

$('.label-passive').parents('._row').hide();

如果这不完全是您想要的,请发表评论,我会尝试改进答案。

编辑:改进了答案,因为OP改进了他的问题:

也许这会对你有所帮助:

$('.CollapseGroup1').each(function() {
    if ($(this).find(".label-passive").length != 0)
        $(this).hide();
});

答案 1 :(得分:0)

你可以试试这个:

$('div.row:has(.label-passive)').hide();

答案 2 :(得分:0)

尝试closest()

$('span.label-passive').closest('div.row').hide();

$(function() {
  $('span.label-passive').closest('div.row').hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="CntWrapper_CntMain_ssm_ctl00_ctl01" class="matrix">
  <div class="CollapseGroup1"></div>
  <div class="row">
    <div class="cell_24">&nbsp;</div>
  </div>
  <div class="row">
    <div class="cell_24">
      <span class="label-passive">text</span>
    </div>
  </div>
  <div class="CollapseGroupClose1"></div>
</div>