我有一个生成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
    }
});

其他回答

我知道这个问题已经问了很长时间了,但我发现答案是这样的:

if ($("#A").is('[myattr]')) {
    // attribute exists
} else {
    // attribute does not exist
}

(可以在这个网站上找到)

关于is的文档可以在这里找到

$("输入(attr]”)。长度可能是更好的选择。

if (!$("#element").attr('my_attr')){
  //return false
  //attribute doesn't exists
}

如果属性出现在给定的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);

})

在这篇文章中,使用.is和属性选择器[],你可以很容易地添加一个函数(或原型):

function hasAttr($sel,attr) {
    return $sel.is('['+attr+']');
}