在尝试选择具有任何属性的元素时,以下内容会引发jQuery语法错误。
$("div[*]")
是否有选择器来检查标签是否有任何属性?
使用jQuery 1.3进行测试
答案 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)