2011-06-22 26 views
0

次のクラスを現在のクラスと同じクラスで見つける方法を教えてください。 jqueryを使用して次のdivを現在のクラス名と同じクラス名で取得する

私は<div>class="help"を持っています。今度は、この中のあるボタンをクリックして、同じ「ヘルプ」クラスで次のものを選択したいときです。

あなたの .click()ハンドラがあるに必要なものを、すべてあなたの helpのdivが兄弟であることを、そしてボタンは常にそれらの1の子であると仮定すると
<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

:@Niklasへ

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

(賛辞.next()をチェックして、それが正しくないことを認識してください)

+0

は、私が考えるに、 '。 next() 'は、' help'が直後の兄弟である場合にのみ機能します。 –

+0

@Paulはい - あなたがコメントしている間にそれを修正していました。 – Alnitak

2

同じクラスを持つ次の要素を見つけるには、セレクタで最初のものを選択してnextAllを使用します。

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

例:あなたはボタンクリックを処理する機能を持っている場合、あなたはhttp://jsfiddle.net/niklasvh/CwSTC/

+0

'.nextAll()'の場合は、 '.nextAll()'で '.hasClass()'メソッドを試してみてください。 – diEcho

+0

@diEcho 'nextAll'はセレクタだけを受け入れます。もちろん、すべての要素を選択して、それを 'hasClass'でフィルタリングすることもできますが、おそらくこれはやや速い方法です。基準を満たしたらすぐに次の要素を取得することを止めることができます。 – Niklas

0

親のdivにアクセスし、そこから次のヘルプdiv要素にアクセスすることができます。下記参照。

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

これは、親の下の**最初の**要素を返します。次の要素は、クリックされたものからではありません。 – Niklas

+0

ああ、そうです。 nextAll(あなたの答えで使ったように)が良いです。それを反映するために私の答えを編集します。 –

関連する問題