如果父div不包含特定的span元素,则隐藏它

时间:2014-02-17 16:37:41

标签: javascript jquery

我有一个像这样构建的评论列表:

<article class="comment">
<span class="field"></span>
</article>

在我的网页中,有些<article class="comment">不包含 <span class="field"></span>我只需要显示那些span元素。

我试过这个:jQuery('article.comment:not(:has(span.field)').hide();

也试过这个:

if (jQuery('span.field').length) {
jQuery('article.comment').show();
 } 
else { jQuery('article.comment').hide(); }

但这隐藏了所有article.comment div,我想隐藏没有span元素的那些。

欢迎任何建议。

谢谢!

5 个答案:

答案 0 :(得分:2)

您缺少一个括号,即关闭:not

的括号
jQuery('article.comment:not(:has(span.field))').hide();

小提琴:http://jsfiddle.net/qdCjP/

答案 1 :(得分:0)

尝试这样做:

jQuery('article.comment').each(function() {
    if(jQuery(this).find('.field').length) {
        jQuery(this).show();
    } else {
        jQuery(this).hide();
    }    
});

答案 2 :(得分:0)

您需要循环浏览文章并根据现有字段隐藏或显示每个文章 -

 jQuery('article.comment').each(function() {
    if(jQuery(this).find('.field').length) {
        jQuery(this).show();
    } else {
        jQuery(this).hide();
    }    
});

答案 3 :(得分:0)

遍历所有跨度并向父母展示。

jQuery('article').hide();
jQuery('article span.field').each(function( i, elem){
    $(elem).parent().show();
});

答案 4 :(得分:0)

你可以试试这个:

jQuery(".comment").hide();
jQuery(".comment .field").parent().show();