我有一个生成id的复选框集合,其中一些有一个额外的属性。是否有可能使用JQuery来检查一个元素是否具有特定的属性? 例如,我能否验证以下元素是否具有属性“myattr”?属性的值可以变化。
<input type="checkbox" id="A" myattr="val_attr">A</input>
例如,我如何才能获得具有此属性的所有复选框的集合而不逐个检查?这可能吗?
我有一个生成id的复选框集合,其中一些有一个额外的属性。是否有可能使用JQuery来检查一个元素是否具有特定的属性? 例如,我能否验证以下元素是否具有属性“myattr”?属性的值可以变化。
<input type="checkbox" id="A" myattr="val_attr">A</input>
例如,我如何才能获得具有此属性的所有复选框的集合而不逐个检查?这可能吗?
当前回答
我已经创建了npm包与预期的行为如上所述。
链接到[npm]和[github]
用法非常简单。例如:
<p id="test" class="test">something</p>
$("#test").hasAttr("class")
返回true。
骆驼皮也适用。
其他回答
我知道这个问题已经问了很长时间了,但我发现答案是这样的:
if ($("#A").is('[myattr]')) {
// attribute exists
} else {
// attribute does not exist
}
(可以在这个网站上找到)
关于is的文档可以在这里找到
if (!$("#element").attr('my_attr')){
//return false
//attribute doesn't exists
}
你的意思是你可以选择他们吗?如果是,那么是的:
$(":checkbox[myattr]")
if ($('#A').attr('myattr')) {
// attribute exists
} else {
// attribute does not exist
}
编辑:
当myattr存在但为空字符串或“0”时,上述内容将归入else分支。如果这是一个问题,你应该显式地测试undefined:
if ($('#A').attr('myattr') !== undefined) {
// attribute exists
} else {
// attribute does not exist
}
在JavaScript中,…
null == undefined
...返回true。就是==和===之间的差值。此外,名称undefined可以被定义(它不像null是一个关键字),所以你最好用其他方式检查。最可靠的方法可能是比较typeof操作符的返回值。
typeof o == "undefined"
然而,在这种情况下,与null进行比较是可行的。
*假设未定义实际上是未定义的。