我有一个生成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>
例如,我如何才能获得具有此属性的所有复选框的集合而不逐个检查?这可能吗?
当前回答
要获得基于多个属性的所有复选框元素的集合,例如在本例中是id和myattr:
var checkboxCollection = $(":checkbox[id][myattr]");
如果你需要为集合中的每个复选框分配事件处理程序:
$(":checkbox[id][myattr]").change(function() {
if(this.checked) {
var valueOfAttribute = $(this).attr('myattr');
// code here
}
else{
// code here
}
});
其他回答
通过使用“typeof”和jQuery,我们得到了一些想法。是“和”。所以我想我应该张贴一个快速的性能比较他们。类型似乎是最好的选择。虽然其他方法也可以工作,但在为此工作调用jq库时,似乎存在明显的性能差异。
除了选择带有属性$('[someAttribute]')或$('input[someAttribute]')的所有元素外,您还可以使用一个函数对对象进行布尔检查,例如在单击处理程序中:
if (!这是他的功劳。
要选择具有特定属性的元素,请参阅上面的答案。
为了确定给定的jQuery元素是否具有特定的属性,我使用了一个小插件,如果ajQuery集合中的第一个元素具有此属性,则返回true:
/** hasAttr
** helper plugin returning boolean if the first element of the collection has a certain attribute
**/
$.fn.hasAttr = function(attr) {
return 0 < this.length
&& 'undefined' !== typeof attr
&& undefined !== attr
&& this[0].hasAttribute(attr)
}
在JavaScript中,…
null == undefined
...返回true。就是==和===之间的差值。此外,名称undefined可以被定义(它不像null是一个关键字),所以你最好用其他方式检查。最可靠的方法可能是比较typeof操作符的返回值。
typeof o == "undefined"
然而,在这种情况下,与null进行比较是可行的。
*假设未定义实际上是未定义的。
这是可行的:
$('#A')[0].hasAttribute('myattr');