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 (只是在页面被删除时复制它!)