在jQuery中如何检查元素上是否有属性?类似于hasClass,但与attr?
例如,
if ($(this).hasAttr("name")) {
// ...
}
在jQuery中如何检查元素上是否有属性?类似于hasClass,但与attr?
例如,
if ($(this).hasAttr("name")) {
// ...
}
当前回答
var attr = $(this).attr('name');
// For some browsers, `attr` is undefined; for others,
// `attr` is false. Check for both.
if (typeof attr !== 'undefined' && attr !== false) {
// ...
}
其他回答
我为jquery写了一个hasAttr()插件,它将非常简单地完成所有这一切,正如OP所要求的那样。更多信息请点击这里
编辑: 我的插件在2010年的plugins.jquery.com数据库删除灾难中被删除。你可以在这里找到一些关于自己添加它的信息,以及为什么它没有被添加。
如果你经常检查属性的存在,我建议创建一个hasAttr函数,使用你在你的问题中假设的:
$.fn.hasAttr = function(name) {
return this.attr(name) !== undefined;
};
$(document).ready(function() {
if($('.edit').hasAttr('id')) {
alert('true');
} else {
alert('false');
}
});
<div class="edit" id="div_1">Test field</div>
来晚了,但是…为什么不只是this.hasAttribute("name")?
请参考这个
用$(this).is("[name]")怎么样?
[attr]语法是属性为attr的元素的CSS选择器,.is()检查调用它的元素是否匹配给定的CSS选择器。
Object.prototype.hasAttr = function(attr) {
if(this.attr) {
var _attr = this.attr(attr);
} else {
var _attr = this.getAttribute(attr);
}
return (typeof _attr !== "undefined" && _attr !== false && _attr !== null);
};
我在写我自己的函数来做同样的事情时遇到了这个问题……我想我应该分享一下,以防有人在这里跌倒。 我添加null是因为如果属性不存在,getAttribute()将返回null。
这个方法允许你检查jQuery对象和常规javascript对象。