2013-04-08 78 views
-2

考虑到我有一个类似的文件:的jQuery - 获得具有相同的数据属性的元素的数组值

<div> 
    <div data-myAttr = "foo"></div> 
    <div data-myAttr = "bar"></div> 
</div> 
<div> 
    <div data-myAttr = "foo"></div> 
    <div data-myAttr = "bar"></div> 
</div> 

如何,我可以得到包含数据myAttr以foo的和酒吧的分组的所有元素?

编辑:这是一个更理论的问题。我没有尝试失败的代码,但正在为已存在的代码探索更优雅的选项。

顺便说一句,谢谢你的-1!?

编辑:有人可以标记为重复?在此找到适用的答案:Group and count HTML elements by data attribute in jQuery

+3

请发布您尝试过的代码无效。 – 2013-04-08 15:39:54

+0

为了探索更加优雅的选项以适应已经运行的代码,请考虑http://codereview.stackoverflow.com,并且您仍然希望发布代码。 – 2013-04-08 15:48:25

回答

0

您可以使用attribute selector并将两个属性选择器与comma结合;

Live Demo

$('[data-myAttr=foo], [data-myAttr=bar]') 

可以使用each()

$('[data-myAttr=foo], [data-myAttr=bar]').each(function(){ 
    alert($(this).text()); 
}); 
+0

感谢您的答案,但有没有可能做到这一点,而不必定义data-myAttr值? – 2013-04-08 15:48:09

+0

是的,你可以做到这一点,检查它在这里,http://jsfiddle.net/ZxQzW/2/ – Adil 2013-04-08 15:50:21

+0

对不起,我的意思是不必将其定义为选择器的一部分。不过谢谢你! – 2013-04-08 16:43:00

2

确定这是通过迭代元素我第一次回答放在这里,所以不要法官严厉......在我我的数组中也有重复的情况。而我才刚刚开始完全了解这一切的作品,但这里有云:

elements = $('div[data-myAttr]').map(function() { 
    return $(this).attr('data-myAttr'); 
}); 

然后通过名称来运行基本JS循环抢用正确的ATTR所有元素。

相关问题