2009-05-18 9 views
1

HTMLコード:特定のクラス名を持つ最も近い上位要素のIDを見つける方法は?

<div id="1" class="master"></div> 
<div id="2" class="slave"></div> 
<div id="3" class="slave"></div> 

<div id="4" class="master"></div> 
<div id="5" class="slave"></div> 
<div id="6" class="slave"></div> 

我々は$( 'DIV')を使用して、のは言わせてクリックする()これらのDIV要素がクリック可能にするために:。

$('div').click(function() { 
    var el = $(this); 
    var master_id = ???; 
    alert(master_id); 
}); 

その後、クラスでDIV要素をクリック " DIV#5またはDIV#6をクリックすると、DIV#2またはDIV#4の場合はアラート= "4"(DIV#4)をクリックすると、クラス「マスター」の最も近い上位DIV要素のIDを警告する必要があります。 DIV#3 - アラート= "1"(DIV#1)。 しかし、それを行う方法? ;)

答えて

2

更新日:

$('div').click(function() { 
    var el = $(this); 
    var master_id = el.prevAll('.master').attr('id'); 
    alert(master_id); 
}); 

編集:

:あなたはcalss 'マスター' とのdivをクリックすると、そのよう
あなたはまた、イベントが発生しませんフィルタを使用することができます
$('div').click(function(e) { 
    var el =$(this); 
    if (!el.is('.master')){ 
     var master_id = el.prevAll(".master").attr('id'); 
    alert(master_id); 
    } 
+0

最も近いトラバースの両親は、それはOPのように兄弟要素が何を探している見つけることができません。 –

+1

ご返信ありがとうございます。 残念ながら、 "スレーブ" DIV要素をクリックすると "未定義"、 "マスター" DIV要素をクリックするとIDが表示されます。 – Ken

+0

2 great_llama、あなたは解決策を知っていますか? – Ken

0

私は最初にprevと思っていましたが、いくつかのテストの後、私はそれが動作しないことに気づきましたslave配置されていないdirectl y後別のslave。最初の試合をprevAllから掴むことは完全に働いた。

デモ:http://jsbin.com/ulipi

$('.slave').click(function() { 
    var el = $(this); 
    var master_id = $(el.prevAll('.master').get(0)).attr('id'); 
    alert(master_id); 
}); 
関連する問題