例如,我想匹配所有属性中包含“data-foo”的元素:
<a data-foo="abc" href="#">I'm Matched</a>
<a data-foo-bar="abc" href="#">I'm Matched Too</a>
<a data-foo-bar-baz="abc" href="#">I'm Matched Too</a>
<a data-bar-foo="abc" href="#">I'm Not Matched</a>
我可以轻松遍历所有元素并检查自己,但我不确定jQuery是否支持这种类型的选择器。
答案 0 :(得分:1)
检查这个小提琴......有点在那里,但也许你可以解决这个问题
$("a").each(function(){
var element = $(this);
var isItMe = 0;
$(element[0].attributes).each(function() {
if(this.nodeName.indexOf("data-bar") >= 0){
isItMe = 1;
}
});
if(isItMe == 1){
$(this).css({"color" : "red"});
}
});
答案 1 :(得分:0)
Satpal的答案相当不错(我喜欢选择器仅限于<a>
元素;这比搜索整个DOM要快一点。)
但我建议您使用多个数据属性。例如:
<a data-foo="abc" href="#">I'm Matched</a>
<a data-foo="abc" data-foo-bar="abc" href="#">I'm Matched Too</a>
<a data-foo="abc" data-foo-bar-baz="abc" href="#">I'm Matched Too</a>
<a data-bar-foo="abc" href="#">I'm Not Matched</a>
或班级:
<a class="foo" data-foo="abc" href="#">I'm Matched</a>
<a class="foo" data-foo-bar="abc" href="#">I'm Matched Too</a>
<a class="foo" data-foo-bar-baz="abc" href="#">I'm Matched Too</a>
<a data-bar-foo="abc" href="#">I'm Not Matched</a>
通过这种方式,您可以匹配一件事(data-foo
或类foo
),并获得您所需的特异性。