2013-08-06 129 views
3

我有一个自定义属性,名为数据角色,我想找到jQuery中的所有元素,其中data-role =“content”如何通过jQuery中的自定义属性的特定值获取元素?

enter image description here

我目前做这与一些旧的JavaScript代码:

var elements = element.getElementsByTagName(tagName); 
for(var i=0; i<elements.length; i++) { 
    if(elements[i].getAttribute("data-role") == "content") { 
    // does something evil 
    } 
} 

免责声明:代码不检查,只是把它写下来很快。

我有一种感觉,在jQuery中有一种优雅的单线解决方案,但我是新手。在我知道之前我无法入睡,所以也许你可以帮助一个兄弟。 ;-)

+0

非常感谢quzick解决方案,我使用了Abraham的选择器。需要等待约。 15分钟,直到我可以标记为已解决。 – beta

回答

6
$("tagName[attribute='value']") 

或者,你的情况:

$("div[data-role='content']") 

返回符合条件的元素。

从那里,如果你想遍历集合此选择和do something evil匹配的元素,你可以:

$("[data-role='content']").each(function(index){ 

    Do something evil 
    $(this) is the current element in the iteration 
}); 

请注意,标记名是可选的。 JQuery选择器可以随意连接,因此您可以同时查询标记名(简单字符串),标识(由#开头),类(由.开头)或属性(如上面的方括号中),或者它们的任何有限组合例如:

$("tagName#someId.someClass.someOtherClass[attribute='value']") 
$("[attribute='value']") 
$('tagName') 
$('#someId') 

是所有有效的查询,但请记住,jquery只会返回匹配查询中所有条件的元素。

1

使用attribute equals selector

$("div[data-role='content']") 

u能找到更多信息here

1

jQuery的按属性选择器中选择:

$('[data-role="content"]') 

而对于一个阵列使用的.each();代替for

$('[data-role="content"]').each(function(){ 
    alert($(this).html()); 
}); 
相关问题