2009-05-18 82 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').click(function() { 
    var el = $(this); 
    var master_id = ???; 
    alert(master_id); 
}); 

然後,點擊帶班DIV元素「從屬「,我們需要提醒最近的DIV元素的ID與類」主「,所以,如果我們點擊DIV#5或DIV#6,警報=」4「(DIV#4),如果DIV#2或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正在做的事。 – 2009-05-18 11:15:53

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); 
}); 
相關問題