2011-06-22 21 views
0

如何找到与当前分类相同的下一个分隔符。使用jquery获取下一个分隔符到当前名称相同的类

我有一个<div>class="help",现在当点击一个按钮里面,我想选择下一个具有相同的“帮助”类。

<div class="help"> 
    <div>....OTHER HTML CONTENT......<div> 
    <input type='submit' class='ok'> 
</div> 
<div>....OTHER HTML CONTENT......<div> 
<div class="help"></div> 
<div>....OTHER HTML CONTENT......<div> 
<div>....OTHER HTML CONTENT......<div> 
<div>....OTHER HTML CONTENT......<div> 
<div class="help"></div> 
<div>....OTHER HTML CONTENT......<div> 
<div class="help"></div> 

回答

0

假设元素兄弟姐妹,你可以做这样的事情:

var $elements = $('.someClass'); 

$elements.click(function() { 
    var $nextElement = $elements.eq($elements.index(this) + 1); 
}); 

参考:eqindex

DEMO

0

假设你所有help的div都是兄弟姐妹,并且该按钮始终其中的一个的孩子,你在你的.click()处理程序需要的是:

$(this).parent().nextAll('.help').first(); 

(荣誉给@Niklas为了让我检查.next()并意识到这是不对的)

+0

我想'。 next()'只在'help'是紧邻的下一个兄弟节点时起作用。 –

+0

@保罗是 - 正在修复,而你评论。 – Alnitak

2

要找到具有相同类的下一个元素,您可以使用nextAll与选择器来选择第一个。

$('input').click(function(){ 
    var a = $(this).parent(); 
    a.nextAll("."+a.attr('class')+":first");  
}); 

例如:http://jsfiddle.net/niklasvh/CwSTC/

+0

+1。'.nextAll()',你用'.nextAll()''.hasClass()'方法尝试。 – diEcho

+0

@diEcho'nextAll'只接受选择器。当然,你可以选择所有元素,然后用'hasClass'过滤它们,但大概这是一个稍微快一点的方法,因为它可以在满足条件时立即停止获取下一个元素。 – Niklas

0

如果你有一个函数来处理按钮点击,您可以访问父格,然后从那里进入下一个帮助股利。见下文。

function btn_click_handler() 
{ 
    var btn = $(this); 
    var next_help_div = btn.parent("div.help").nextAll("div.help:first"); 
    <your code here> 
} 
+0

这将返回父母下方的** first **元素,而不是单击的下一个**元素。 – Niklas

+0

啊,你是对的。 nextAll(正如你在答案中所用的)更好。我会编辑我的答案以反映这一点。 –