我正在寻找一种方法来获取以" on"开头的元素的所有属性。使用jQuery或Vanilla JS。我目前正在获取所有属性,然后使用@primvdb在此帖子上提出的方法循环遍历它们以获取我想要的属性:Get all attributes of an element using jQuery。
我的代码如下所示:
/* Expanding .attr as proposed by @primvdb */
(function(old) {
$.fn.attr = function() {
if(arguments.length === 0) {
if(this.length === 0) {
return null;
}
var obj = {};
$.each(this[0].attributes, function() {
if(this.specified) {
obj[this.name] = this.value;
}
});
return obj;
}
return old.apply(this, arguments);
};
})($.fn.attr);
/* And then my function */
$.fn.attrThatBeginWith = function(begins){
var attributes = this.attr();
var attrThatBegin = {};
for(var attr in attributes){
if(attr.indexOf(begins)==0){
attrThatBegin[attr] = attributes[attr];
}
}
return attrThatBegin;
};
/* Usage */
var onAttributes = $("#MyElement").attrThatBeginWith("on");

这种方法很有效,但非常“肮脏”#34;它看起来像jQuery的所有广泛功能,应该有一个更好的"更清洁"这样做的方式。有人有什么建议吗?
答案 0 :(得分:4)
您可以使用element.attributes
获取附加到元素的所有属性
可以将本机属性对象转换为数组,然后根据给定的字符串进行过滤。
执行上述操作的插件看起来像
$.fn.attrThatBeginWith = function(begins){
return [].slice.call(this.get(0).attributes).filter(function(attr) {
return attr && attr.name && attr.name.indexOf(begins) === 0
});
};