检查子元素,如果子元素存在则隐藏父元素

时间:2014-11-04 00:06:28

标签: javascript jquery css

我试过这个:

<script>
$(document).ready(function() {
  $('#title_article:not(:has(>hr:first-child))').hide();
});
</script>

但从未表现出..


<div id="title_article">
    <span style="padding-left:121px;">Article | </span>
    <span class="entry-date"><?php echo get_the_date(); ?></span>
</div>

如果<hr>存在<hr>,则要求检查#title_article的子元素隐藏父级或<hr>

<div id="title_article"></div>不在<!-- page content --> <div id="title_article></div> <hr> <!-- page content --> 但在{{1}}之内:

{{1}}

3 个答案:

答案 0 :(得分:3)

$(document).ready(function() { 

 if($("#title_article").next("hr").length==0)

    $("#title_article").hide()

});

http://fiddle.jshell.net/prollygeek/57gcx6or/3/

编辑: 使用.siblings()

答案 1 :(得分:3)

您正在寻找.next()

  

获取匹配元素集中每个元素的紧随其后的兄弟。如果提供了选择器,则仅当它与该选择器匹配时,它才会检索下一个兄弟。

您必须执行以下操作:

if ($('#title_article').next('hr').length)
    $('#title_article').hide();

在您的示例中,<hr>不是#title_article的子元素,而是兄弟姐妹。

答案 2 :(得分:1)

您可以使用jQuery必须提供的children函数。

在此上下文中尝试:

if($('#title_article').children('hr').length > 0) {
    $('#title_article').hide();
 }

或者这个:

if($('#title_article').children('hr').length != 0) {
    $('#title_article').hide();
 }

您还可以使用parent功能

在此上下文中尝试:

$('#title_article hr').parent().hide();

这会隐藏其中包含#title_article的每个hr