2010-08-25 192 views
3

使用JQuery,如何在id为y的元素中选择x类中的所有元素?JQuery选择器帮助

+0

你想对这些元素做什么?只需选择它们? – Catfish 2010-08-25 21:06:29

+0

身份证不应始终是唯一的吗? – drummondj 2010-08-25 21:07:00

+0

@卡通鱼不,但我知道如何去做其余的事情。我只是对选择感到困惑。 – dmr 2010-08-25 21:07:27

回答

6

选择id为“y”的元素的类x的所有后代。

$("#y .x").each(function() { 
    $(this) <- your element 
}); 

选择具有ID为“y”的元素的类x的所有儿童。

$("#y > .x").each(function() { 
    $(this) <- your element 
}); 
+1

第一个代码与'$ (“#y”)。find(“。x”)'和第二个与$(“#y”)相同find(“> .x”)' – BrunoLM 2010-08-25 22:04:21

+0

@BrunoLM +1好的补充,我更喜欢但我的方法。另外,如果他想要使用'.click'来代替,那么'.each'会被移除。 – 2010-08-25 22:23:44

5

$('#y .x')应该为你做。

请注意,这将选择x类的所有后代,而不仅仅是儿童。

+1

+1对于后代与儿童 – 2010-08-25 21:12:46

+0

为了简洁(讽刺的是,我不能只是把它作为评论:“评​​论必须至少有15个字符的长度。”) – Homer 2010-08-25 21:38:29

4
$("#x .y").doSomething(); 

$(".y", "#x").doSomething(); 

$("#x").find(".y").doSomething(); 

,近期儿童:

$("#x > .y").doSomething(); 

$("#x").children(".y").doSomething(); 

我的问题有一个看看这里,它会告诉你更多一点,它涵盖了性能。 What is the fastest method for selecting descendant elements in jQuery?

+1

+1 - 完全答案。只是想我会指出,在你的第二个例子中,你不需要为上下文传递一个jQuery对象。你可以传递字符串'“#x”'。 jQuery在后台翻转成你的第三个版本。 :o) – user113716 2010-08-25 21:53:56

+0

哈!我其实是在想这件事。感谢@patrick! – Marko 2010-08-25 22:00:27

1

如果你有元件1 ID = 'Y',你希望所有如果你要ID的所有decendants它的[即时]的孩子,有一类= 'X'

$("#y > .x").each(function(){stuff]); 

=” Y”(不只是即时),那么你会怎么做:

$("#y").find(".x").each(function(){stuff}); 

很明显,你可以使它更聪明(更好)通过添加元素的类型,如果你知道它们是什么。例如,如果你只想要孩子的类型,那么:

$("#y > a.x").each(function(){stuff]); 

希望这就是你的意思。

+0

使用'.children()'不会给你所有的后代。就在眼前。你正在考虑'.find()',它会返回所有匹配的后代。 – user113716 2010-08-25 21:45:13

+0

woops - 我的坏。我会编辑 – patrickgamer 2010-08-25 21:52:43