可能重复:
使用JQuery检查属性是否存在
你如何检查jQuery中的元素是否有属性?类似于hasClass,但有attr?
例如,
if ($(this).hasAttr("name")) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
str*_*ger 1036
var attr = $(this).attr('name');
// For some browsers, `attr` is undefined; for others,
// `attr` is false. Check for both.
if (typeof attr !== typeof undefined && attr !== false) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
Dom*_*nic 610
怎么样$(this).is("[name]")?
该[attr]语法是用于与属性的元素的CSS选择attr,并.is()检查是否它被称为在元件给定的CSS选择相匹配.
kar*_*m79 143
如果您经常检查属性的存在,我建议您创建一个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>
Run Code Online (Sandbox Code Playgroud)
Tri*_*ith 90
你太近了,这很疯狂.
if($(this).attr("name"))
Run Code Online (Sandbox Code Playgroud)
没有hasAttr但按名称命中属性只会返回undefined(如果它不存在).
这就是下面的原因.如果从#heading中删除name属性,则会触发第二个警报.
更新:根据评论,如果属性存在,则以下将仅起作用并且如果属性存在则设置为不存在但不为空
<script type="text/javascript">
$(document).ready(function()
{
if ($("#heading").attr("name"))
alert('Look, this is showing because it\'s not undefined');
else
alert('This would be called if it were undefined or is there but empty');
});
</script>
<h1 id="heading" name="bob">Welcome!</h1>
Run Code Online (Sandbox Code Playgroud)
Dom*_*nic 77
晚了,但是......为什么不this.hasAttribute("name")呢?
请参阅此
Jam*_*Gen 17
最好的方法是filter():
$("nav>ul>li>a").filter("[data-page-id]");
Run Code Online (Sandbox Code Playgroud)
拥有.hasAttr()仍然会很好,但因为它不存在就有这种方式.
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);
};
Run Code Online (Sandbox Code Playgroud)
我在编写自己的函数的同时做了同样的事情,但我会分享以防万一其他人在这里绊倒.我添加了null,因为如果该属性不存在,getAttribute()将返回null.
此方法将允许您检查jQuery对象和常规javascript对象.
您还可以在表单字段等上使用诸如disabled ="disabled"之类的属性,如下所示:
$("#change_password").click(function() {
var target = $(this).attr("rel");
if($("#" + target).attr("disabled")) {
$("#" + target).attr("disabled", false);
} else {
$("#" + target).attr("disabled", true);
}
});
Run Code Online (Sandbox Code Playgroud)
"rel"属性存储目标输入字段的id.
| 归档时间: |
|
| 查看次数: |
810813 次 |
| 最近记录: |