0

我知道过滤它是

$("div:parent")

但是我如何使用遍历来查看元素是否是父元素?

4

3 回答 3

2

如果您对 jQuery 不满意$('div:parent'),并且想显式调用 jQuery 遍历方法,则可以使用

$('div').filter(function(){return $(this).children().length})

如果需要,我们可能会提出更慢或可读性更低的建议。

请注意,这与使用 childNodes 并不完全相同。如果你想看看有没有内容,包括文字,你可能更喜欢

$('div').filter(function(){return $(this).contents().length})
于 2012-12-01T16:11:24.710 回答
1

尝试使用:has

$('div:has(*)')

.has()

$('div').has('*')

如果你想检查它是否有任何内容.. 使用:empty选择器

$('div:empty')
于 2012-12-01T16:16:31.113 回答
0

您要使用的是:empty http://api.jquery.com/empty-selector/

但要小心,如果空里面有空格,则不会认为它们是空的。所以你可以制作另一个选择器/表达式

工作演示:http: //jsfiddle.net/fedmich/7WdmD/

$(function() {
    $.extend($.expr[':'],{
    empty_noWhiteSpace: function(a,i,m){
        return $.trim(a.innerHTML) === '';
    }
});

    $('ul li:empty_noWhiteSpace').addClass('is_empty');
});?

因为当您有这样的列表项时

  •     </li>
        <li>
        not empty
        </li>
    

    第一个 li 项目有换行符,所以它仍然被认为不是':empty'标签

  • 于 2012-12-02T00:51:56.443 回答