我有一个生成id的复选框集合,其中一些有一个额外的属性。是否有可能使用JQuery来检查一个元素是否具有特定的属性? 例如,我能否验证以下元素是否具有属性“myattr”?属性的值可以变化。

<input type="checkbox" id="A" myattr="val_attr">A</input>

例如,我如何才能获得具有此属性的所有复选框的集合而不逐个检查?这可能吗?


当前回答

如果属性出现在给定的HTML元素中,我们可以很容易地访问value属性。

var offORonlinePath="../img/";   //We can easy to change the path anytime
var extension=".webp"; //we can later change any value like png,jpg,...

$("img[data-src]").each(function(){
  var imgName=$(this).data("src");

  $(this).attr("src",offORonlinePath+imgName+extension);

})

其他回答

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
}

JQuery将以字符串的形式返回属性。因此,你可以检查该字符串的长度,以确定是否设置:

if ($("input#A").attr("myattr").length == 0)
 return null;
else
 return $("input#A").attr("myattr");

简单:

$("input[name*='value']")

更多信息:官方文档

要选择具有特定属性的元素,请参阅上面的答案。

为了确定给定的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)
}
$("input#A").attr("myattr") == null