2012-10-04 35 views
0

如何使用相同的代码找到这两个示例。如何使用jQuery选择这些嵌套标签

<div> 
    <div> 
    <span class='example-1'></span> 
    </div> 
    <ul class='find-me'> <!-- find this for example 1 --> 

    <li> 
     <span></span> 
     <ul class='find-me'></ul> 
    </li> 

    <!-- Any number of li tags here --> 

    <li> 
     <span class='example-2'></span> 
     <ul class='find-me'></ul> <!-- find this for example 2 --> 
    </li> 

    <!-- Any number of li tags here --> 

    </ul> 
</div> 

鉴于我有例如-1和实施例2,如何写两个实例中相同的选择器jQuery对象?可能吗?

我不能只做selector.parent()。find(“。find-me”),因为这对第一个例子不起作用。我不能做selector.parent()。parent()。find(“。find-me:first”),因为这会在第二个例子中选择错误的find-me。

我需要以某种方式说去祖父母,然后去你开始的地方,找到下一个找我的课。

编辑:到目前为止的答案似乎都是误解。必须只有一个适用于这两个示例的选择器,并且选择器必须与表示示例跨度的jQuery对象相关。

回答

2

下面是我能拿出最好的:

var $example1 = $(".example-1"); 
var $example2 = $(".example-2"); 

$example1.add($example1.parents()).siblings('.find-me').css("color", "red"); 
$example2.add($example2.parents()).siblings('.find-me').css("color", "blue");​ 

演示:http://jsfiddle.net/HNfpM/3/

+0

我看不出如何工作,第二个例子将选择.find-me高于示例而非低于示例。 http://jsfiddle.net/HNfpM/ – SystemicPlural

+0

你为什么需要这样做?改变你的标记会比较容易,而不是提出一个令人费解的jQuery选择器。 – Blender

+0

真实用例更复杂 - 更灵活,并且需要像这个更简单的示例所示的那样抽象化。我已经给了你一个安慰,至少理解这个问题。其他人似乎没有这样做。 – SystemicPlural

0

$('.find-me')[0]的第一个例子 $('.find-me')[2]的第二个例子

+0

我需要使用一个相同的选择器蛾壳。它需要相对于选定的jquery示例元素 – SystemicPlural

0

如何$("div span, li span"),或者您可以使用CSS3选择器:[ATT^= VAL] http://www.w3.org/TR/css3-selectors/ 我会实际使用CSS3选择器。我已经添加了工作演示的评论

+0

我需要在这两种情况下使用相同的选择器。它需要是相对于选定的jquery示例元素 – SystemicPlural

+0

好吧,然后,他是你想要的:http://jsfiddle.net/G4c9J/9/ –

0
$('div > ul.find-me'); <!-- find this for example 1 --> 



$('div > ul > li > ul.find-me'); <!-- find this for example 2 --> 
+0

我需要为这两种情况使用相同的选择器。它需要相对于选定的jquery示例元素 – SystemicPlural