2010-02-18 49 views
2

这可能会很棘手。jQuery发现李与类直到

PHP将产生:

<li>element</li> 
<li>element</li> 
<li class="alt">element</li> 
<li class="alt">element</li> 
<li class="alt">element</li> 
<li>element</li> 
<li>element</li> 
<li class="alt">element</li> 
<li class="alt">element</li> 
<li class="alt">element</li> 
<li>element</li> 

我需要的是找到与.ALT类li元素,直到li元素开始的方式。 所以......

<li>element</li> 
<li>element</li> // if I click on this one, it will select 
<li class="alt">element</li> // this one 
<li class="alt">element</li> // and this one 
<li class="alt">element</li> // and this one 
<li>element</li> // stops selecting here 
<li>element</li> 
<li class="alt">element</li> // doe not this one 
<li class="alt">element</li> // or this one 
<li class="alt">element</li> // or any other .alt 
<li>element</li> 

我试着用.find这样做(),但我不能找到一种方法来划分.ALT元素分组和隔离的第一个。

任何糠s有一个好主意?

回答

5

如果您使用jQuery 1.4,您可以使用新的nextUntil方法。

http://api.jquery.com/nextUntil/

编辑 - 例如:

$("li").click(function() { 

    $(this).nextUntil("li[class='']").each(function() {   
    console.log($(this));   
    }); 

}); 
+0

我刚刚看了一下这个的一天。我和我的记忆,非常感谢你的队友。 – daulex 2010-02-18 16:54:32

+0

+1获取1.4采用推 – 2010-02-18 20:21:08

+0

@daulex - 没问题 @mark - 是的,这种方法是相当方便的。我可以想到很多我以前可以使用它的情况。我也喜欢更直观的.index()用法。 – ScottE 2010-02-18 22:30:49

0

尝试(夫妇的编辑,但认为我有它)

$( '李:包含(元素)')点击()找到(“礼:。包含(元素):没有[ALT]:第一 ')prevAll(' li.alt');

0

难道你不能添加一个额外的类为lis将要检索吗?