我可以检查元素是否具有以下特定属性:
if ($('#A').attr('myattr') !== undefined) {
// attribute exists
} else {
// attribute does not exist
}
如何检查元素是否具有任何属性?
谢谢
答案 0 :(得分:9)
如果您想查看元素是否具有特定属性,请执行以下操作:
if ($('#something').is('[attribute]')) {
// ...
}
答案 1 :(得分:6)
这是一个函数,用于确定与选择器匹配的任何元素是否至少具有一个属性:
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
}
如果您想对具有至少一个属性的选定元素进行操作,则更容易 - 您创建自定义过滤器:
// 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');
}
答案 2 :(得分:4)
$("selector").get(0).hasAttributes("attributes");
答案 3 :(得分:2)
答案 4 :(得分:2)
不是一个完整的jQuery代码,但它可以工作
$("a").click(
function () {
if($("a").get(0).attributes > 0)
alert("it has attributes");
})
答案 5 :(得分:1)
我不确定你是否想要返回包含该属性的元素,但如果你是,我找到了最简单的方法:
$('selector[attribute]')
这将返回jquery对象以包含包含该属性的所有元素,而不管其值如何。例如。
$(':text[maxlength]').addClass('has_max_length');
这将为所有带有maxlength属性的文本输入提供一个'has_max_length'类。
答案 6 :(得分:0)
这是一个解决方案,我发现更可靠的是知道某个元素是否定义了适用于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也会返回高属性计数。例如,对于简单的&lt; p>标签,IE告诉我它有111个属性。通过该解决方案,我能够过滤掉那些我不感兴趣的属性。
这个解决方案来自:http://help.dottoro.com/ljevmnkf.php(只是在页面被移除时复制它)。