jQuery选择具有A类或B类或C类的元素

时间:2011-08-31 13:32:43

标签: javascript jquery arrays class jquery-selectors

我正在做一些需要两个功能的事情。

1 - 我需要查看同一父项下的一组子项,并根据类名“active”将该元素的ID添加到数组中。

['foo-a','foo-b','foo-d']

2 - 然后我遍历另一个父节点中的所有子节点以及我想要查找的每个元素是否有与数组中的id匹配的任何类名。

此元素是否具有类foo-a,foo-b或foo-d?

3 个答案:

答案 0 :(得分:3)

对于第一部分,我使用mapget

var activeGroups = $('#parent .active').map(function() {
    return this.id;
}).get();

这会为您提供一组id值(例如['foo-a', 'foo-d'])。然后,您可以使用multiple selector创建.foo-a, .foo-b, .foo-cjoin)之类的选择器:

var activeSelector = '.' + activeGroups.join(', .');

这使得一个有效的jQuery选择器字符串,例如'.foo-a, .foo-d'。然后,您可以使用此选择器使用find

查找所需的元素
var activeEls = $('#secondParent').find(activeSelector);

然后,您可以使用activeEls执行任何操作。

答案 1 :(得分:2)

var active = $("#foo").find(".active").map(function() {
    return this.id;
}).get();

$("#anotherParent *").each(function() {
   var that = this;
   var classes = $(this).attr("class");
   if(classes.indexOf(" ") !== -1) {
       classes = classes.split(" ");
   } else {
       classes = [ classes ];  
   }
   $.each(classes, function(i, val) {
       if($.inArray(val, active)) {

           // this element has one of 'em, do something with it
           $(that).hide();
       }
   });
});

答案 2 :(得分:1)

总是.is('.foo-a, .foo-b, .foo-d')。或者,如果您实际上只是想选择它们,而不是迭代和决定每个元素,$('.foo-a, .foo-b, .foo-d', startingPoint)