我想创建一个选择器来查找具有以字符串开头的属性的元素。此时,我假设这个选择器不存在。 我是否需要扩展选择器功能? James Padolsey Extending jQuery’s selector capabilities
我需要表达类似于包含前缀选择器[name | =“value”]的内容,但不是匹配“value”,而是需要匹配属性的名称,而不是属性的值。
<tag data-plugin-option1="val1" data-plugin-option2="val2" />
我想最终得到这样的语法:
$('tag(:attr|="data-plugin")')
应找到元素tag
,因为它至少有一个以data-plugin
开头的元素
答案 0 :(得分:11)
嗯,我想我的方式不同。
我读它的方式,你想创建一个自定义选择器,选择具有给定属性名称(或该名称的开头)的元素。
如果是这样,我认为您需要为每个元素迭代attributes
集合。
DEMO: http://jsfiddle.net/GgmM7/
$.extend($.expr[':'],{
attrNameStart: function(el,i,props) {
var hasAttribute = false;
$.each( el.attributes, function(i,attr) {
if( attr.name.indexOf( props[3] ) !== -1 ) {
hasAttribute = true;
return false; // to halt the iteration
}
});
return hasAttribute;
}
});
$('img:attrNameStart(data-plugin)')