按属性select元素
我有一个checkbox与生成的ID集合,其中一些有一个额外的属性。 是否有可能使用JQuery检查一个元素是否有一个特定的属性? 例如,我可以validation下列元素是否具有属性“myattr”? 属性的值可能会有所不同。
<input type="checkbox" id="A" myattr="val_attr">A</input> 例如,我怎样才能得到所有具有这个属性的checkbox的集合,而不是逐个检查? 这可能吗?
你的意思是你可以select吗? 如果是这样,那么是的:
 $(":checkbox[myattr]") 
 if ($('#A').attr('myattr')) { // attribute exists } else { // attribute does not exist } 
编辑:
 当myattr存在时,上述将落入else myattr ,但是是一个空string或“0”。 如果这是一个问题,你应该明确地testingundefined : 
 if ($('#A').attr('myattr') !== undefined) { // attribute exists } else { // attribute does not exist } 
我知道这个问题已经过了很长时间了,但是我发现这个检查更清晰:
 if ($("#A").is('[myattr]')) { // attribute exists } else { // attribute does not exist } 
(在这里find这个网站)
有关的文档可以在这里find
在JavaScript中,…
 null == undefined 
  …返回true *。 这是==和===之间的区别。 此外, undefined的名称可以定义(它不是一个像null这样的关键字),所以你最好检查其他方式。 最可靠的方法可能是比较typeof运算符的返回值。 
 typeof o == "undefined" 
尽pipe如此,与null比较应该在这种情况下工作。
  *假设undefined实际上是未定义的。 
这将工作:
 $('#A')[0].hasAttribute('myattr'); 
  $("input[attr]").length可能是一个更好的select。 
一些想法被扔在使用“typeof”,jQuery“.is”和“.filter”,所以我想我会张贴一个快速的性能比较他们。 typeof似乎是这个的最佳select。 虽然其他人会工作,但在调用jq库进行这项工作时,似乎有明显的性能差异。
 $("input#A").attr("myattr") == null 
只是:
 $('input[name*="value"]') 
更多信息: 官方文档
 除了select具有属性$('[someAttribute]')或$('input[someAttribute]')所有元素外,还可以使用函数对对象执行布尔检查,如单击处理函数: 
 if(! this.hasAttribute('myattr') ) { ... 
 if (!$("#element").attr('my_attr')){ //return false //attribute doesn't exists } 
我已经按照上面所描述的那样创build了具有预期行为的npm包。
链接到[npm]和[github]
用法很简单。 例如:
 <p id="test" class="test">something</p> $("#test").hasAttr("class") 
返回true。
和camelcase一起工作。
JQuery将以string的forms返回属性。 因此,您可以检查该string的长度以确定是否已设置:
 if ($("input#A").attr("myattr").length == 0) return null; else return $("input#A").attr("myattr");