jQuery检查元素是否包含任何属性

我可以检查元素是否具有以下特定属性:

if ($('#A').attr('myattr') !== undefined) { // attribute exists } else { // attribute does not exist } 

如何检查元素是否具有任何属性?

谢谢

这是一个函数,用于确定与选择器匹配的任何元素是否至少具有一个属性:

 function hasOneOrMoreAttributes(selector) { var hasAttribute = false; $(selector).each(function(index, element) { if (element.attributes.length > 0) { hasAttribute = true; return false; // breaks out of the each once we find an attribute } }); return hasAttribute; } 

用法:

 if (hasOneOrMoreAttributes('.someClass')) { // Do something } 

如果您想对具有至少一个属性的选定元素进行操作,则更容易 – 您创建自定义filter:

 // Works on the latest versions of Firefox, IE, Safari, and Chrome // But not IE 6 (for reasons I don't understand) jQuery.expr[':'].hasAttributes = function(elem) { return elem.attributes.length; }; 

您可以这样使用:

 $(document).ready(function(){ $('li:hasAttributes').addClass('superImportant'); } 

如果要查看元素是否具有特定属性,请执行以下操作:

 if ($('#something').is('[attribute]')) { // ... } 
 $("selector").get(0).hasAttributes("attributes"); 

不是一个完整的jQuery代码,但它会工作

 $("a").click( function () { if($("a").get(0).attributes > 0) alert("it has attributes"); }) 

您需要使用来自使用Javascript / jQuery的HTML元素获取所有属性的信息

我不确定你是否想要返回包含该属性的元素,但如果你是,我发现最简单的方法是:

 $('selector[attribute]') 

这将返回jquery对象以包含包含该属性的所有元素,而不管其值如何。 例如。

 $(':text[maxlength]').addClass('has_max_length'); 

这将为所有带有maxlength属性的文本输入提供一个’has_max_length’类。

这是一个解决方案,我发现更可靠的是知道元素是否定义了适用于IE,Chrome和Firefox的属性:

 $(selector).each(function(index, element) { if (element.hasAttributes) { // Some browser supports this method if (element.hasAttributes()) { return true; } } else { // IE counts many attributes - even if not set explicitly var attrs = element.attributes; for (var i = 0; i < attrs.length; i++) { if (attrs[i].specified) { return true; } } } return false; }); 

问题是即使没有明确设置IE,IE也会返回高属性计数。 例如,对于一个简单的

标签,IE告诉我它有111个属性。 通过该解决方案,我能够过滤掉那些我不感兴趣的属性。

这个解决方案在这里采取: http : //help.dottoro.com/ljevmnkf.php (只是在页面被删除时复制它!)