是否有一个jQuery选择器来检查标签是否有任何属性?

时间:2010-03-15 15:11:15

标签: jquery jquery-selectors

在尝试选择具有任何属性的元素时,以下内容会引发jQuery语法错误。

$("div[*]")

是否有选择器来检查标签是否有任何属性?

使用jQuery 1.3进行测试

4 个答案:

答案 0 :(得分:6)

我不这么认为,但这应该可以解决问题

$('*').filter(function(){return this.attributes.length;})

反之亦然:

$('*').filter(function(){return !this.attributes.length;})

答案 1 :(得分:5)

您可以为无属性创建自己的选择器:

$.expr[':'].noAttrs = function( objNode  ){
    if (objNode.attributes.length) return( true );
    return( false );
}

$("div:noAttrs")

答案 2 :(得分:1)

我选择使用Ariel Popovsky建议使用过滤器,但如果我在很多地方需要这个,我会使用petersendidit建议创建客户选择器。

(重要)区别在于需要检查.specified属性。 IE总是返回80多个属性。

注意:即使这不是100%。有一些属性,比如INPUT .value,这是特殊情况,但由于我使用的是DIV,我可以忽略它们。

$("div").filter(function()
{ 
    for (var i = 0; i < this.attributes.length; i++)
    {
        var attr = this.attributes[i];
        if (attr.specified) 
        {
            return true;
        }
    }
    return false;
})

答案 3 :(得分:0)

也许if($('.class').attr('*:attr').length > 0)