2009-05-18 1 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').click(function(e) { 
    var el =$(this); 
    if (!el.is('.master')){ 
     var master_id = el.prevAll(".master").attr('id'); 
    alert(master_id); 
    } 
+0

가장 가까운 이송 부모가, 그것은 OP 같은 형제 요소가 할 찾고 찾을 수 없습니다. –

+1

답장을 보내 주셔서 감사합니다. 유감스럽게도 "slave"DIV 요소를 클릭 할 때 "정의되지 않음"을 알리고 "master"DIV 요소를 클릭하면 해당 ID를 알립니다. – Ken

+0

2 great_llama, 솔루션을 알고 계십니까? – Ken

0

나는 처음에는 prev이 될 것이라고 생각했지만, 어떤 테스트를 한 후에는 작동하지 않을 것이라고 알았습니다. slave 배치되지 않은 directl 뒤에서 또 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); 
}); 
관련 문제