复杂选择器中的jquery OR选择器

时间:2012-12-13 18:42:22

标签: jquery jquery-selectors

我有以下选择器:

$(".product_tile:nth-child(6n) .tile_back select[name='crust']")

它找到每个第6个product_tile,然后使用tile_back类获取子div,然后在其中选择名为crust的选择框。我现在需要修改它,以便它找到两个选择框之一 - 外壳或基础。

我知道在基本选择器中,我可以使用逗号:

$("select[name='crust'], select[name='base']")

但是如果我在原始选择器中使用逗号分隔的选择器,它是否会知道逗号只适用于它的最后一部分,或者它会将其视为“查找每个第6个product_tile的tile_back的crust选择框或找到任何选择名为base的框“?如果是后者,如何编写选择器以使其将其视为“查找每个第6个product_tile的tile_back的crust选择框或者找到每个第6个product_tile的tile_back的基本选择框”?

4 个答案:

答案 0 :(得分:3)

您可以使用context selector这样的

指定要搜索的上下文
$("select[name='crust'], select[name='base']",'.product_tile:nth-child(6n) .tile_back')

最初与

相同
$('.product_tile:nth-child(6n) .tile_back').find("select[name='crust'], select[name='base']");

在.product_tile:nth-​​child(6n)下找到name = crust或name = base的所有选项

答案 1 :(得分:2)

您将无法将逻辑放入选择器。你要么必须有两个带逗号的完整选择器:

$(".product_tile:nth-child(6n) .tile_back select[name='crust'], product_tile:nth-child(6n) .tile_back select[name='base']")

或使用一个选择器匹配到.tile_back并使用第二个选择器进行过滤:

$(".product_tile:nth-child(6n) .tile_back").find("select[name='crust'], select[name='base']")

答案 2 :(得分:1)

不,只需在逗号后添加开头部分:

$(".product_tile:nth-child(6n) .tile_back select[name='crust'], .product_tile:nth-child(6n) .tile_back select[name='base']")

答案 3 :(得分:1)

.add()方法将所选元素添加到结果集中:

$(".product_tile:nth-child(6n) .tile_back").add("select[name='crust']").add("select[name='base']");