<div id="CntWrapper_CntMain_ssm_ctl00_ctl01" class="matrix">
<div class="CollapseGroup1"></div>
<div class="row">
<div class="cell_24"> </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元素。
答案 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"> </div>
</div>
<div class="row">
<div class="cell_24">
<span class="label-passive">text</span>
</div>
</div>
<div class="CollapseGroupClose1"></div>
</div>