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) {
// ...
}
<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>
9 回答
只是
$(this).is("[name]")
怎么样?[attr]
语法是具有属性attr
的元素的CSS选择器,.is()
检查它被调用的元素是否与给定的CSS选择器匹配 .如果您经常检查属性的存在,我建议您创建一个
hasAttr
函数,以便在您的问题中假设使用:你太近了,这很疯狂 .
没有hasAttr但按名称命中属性只会返回undefined(如果它不存在) .
这就是下面的原因 . 如果从#heading中删除name属性,则会触发第二个警报 .
Update: 根据评论,如果属性存在,下面将 ONLY 工作 AND 设置为如果属性存在但不为空
晚了,但是......为什么不只是
this.hasAttribute("name")
?参考This
最好的方法是使用
filter()
:拥有.hasAttr()仍然会很好,但因为它不存在就有这种方式 .
我在编写自己的函数的同时做了同样的事情,但我会分享以防万一其他人在这里绊倒 . 我添加了null,因为如果该属性不存在,getAttribute()将返回null .
此方法将允许您检查jQuery对象和常规javascript对象 .
您还可以在表单字段等上使用诸如disabled =“disabled”之类的属性,如下所示:
“rel”属性存储目标输入字段的id .
我为jquery编写了一个hasAttr()插件,它将完全按照OP的要求完成所有这些操作 . 更多信息here
EDIT: 我的插件在2010年的plugins.jquery.com数据库删除灾难中删除了 . 您可以查看here了解自己添加的一些信息,以及为什么没有添加它 .