【发布时间】:2010-03-16 02:38:31
【问题描述】:
在尝试选择具有任何属性的元素时,以下会引发 jQuery 语法错误。
$("div[*]")
是否有选择器来检查标签是否有任何属性?
使用 jQuery 1.3 测试
【问题讨论】:
在尝试选择具有任何属性的元素时,以下会引发 jQuery 语法错误。
$("div[*]")
是否有选择器来检查标签是否有任何属性?
使用 jQuery 1.3 测试
【问题讨论】:
我不这么认为,但这应该可以解决问题
$('*').filter(function(){return this.attributes.length;})
反之:
$('*').filter(function(){return !this.attributes.length;})
【讨论】:
您可以为无属性创建自己的选择器:
$.expr[':'].noAttrs = function( objNode ){
if (objNode.attributes.length) return( true );
return( false );
}
$("div:noAttrs")
【讨论】:
我接受了 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;
})
【讨论】:
也许if($('.class').attr('*:attr').length > 0)
【讨论】: