2012-03-05 3 views
0

.delegate 메서드를 사용하여 올바른 요소를 선택하는 데 문제가 있습니다.클릭 할 때 요소 선택

<div><span>Some element</span></div> 

click 이벤트가 span 태그를 통해 발생한 경우에도 div 요소를 선택해야합니다. 어떤 아이디어, span 요소를 통해 div에 어떻게 도달 할 수 있습니까?

확인 - 분명하지 않으므로 다시 설명하려고합니다. 메인 DIV가 있습니다. 모든 이벤트를 캡처하여 처리해야하는 영역입니다. 각 "클릭", "keydown"및 "keyup"이벤트는 주 DIV 내부의 두 번째 레벨에 의해 트리거되어야합니다. 이 두 번째 레벨은 다른 DIV 목록입니다.

<div id="outline"> 
    <div id="1"><span>Some Text <img src="could/be/picture" /></span></div> 
    <div id="2"><span>Some Text <ul><li>Could</li><li>Be</li><li>List</li></ul></span></div> 
    <div id="3"><span>Some Text <a href="#">Even a link</a></span></div> 
</div> 

U가 볼 수 있듯이, 거의 모든 것들이 DIV 안에있을 수 있습니다. 그리고 나는 그들 모두가 사건을 촉발시킬 수 없도록해야합니다. 수단 : IMG 또는 UL> LI 또는 A 결과를 밑에있는 DIV의 이벤트에서 ...

답변

1

콜백 함수에서 this<span> 요소를 나타냅니다. 관심있는 <div> 요소는 <span> 요소의 부모, 그래서 너무처럼 jQuery를 .parent() 함수를 사용

$(this).parent(); 
+0

지금까지는 그렇게 좋았습니다. 그러나 DIV 및/또는 SPAN을 클릭 할 수 있으며, 선택하고 싶은 DIV에 여러 요소가 중첩되어 있는지 알 수 없습니다. – David

+0

@David 질문에있는 코드를 게시 하시겠습니까? 어떤 요소가 클릭되었는지에 관계없이 콜백에 동일한 함수를 사용하는 경우 노드 유형을 확인해야합니다. div 인 경우 원하는 요소가 이미 있습니다. 그것이 범위라면 요소를 얻기 위해 DOM을 트래버스해야합니다. –

+0

내 코드는 다음과 같습니다. .delegate (this, 'click.outline', function (e) { select_item (e); }); 및. var select_item = function (e) { $ selection = $ (e.target); set_selection_highlight(); }; 죄송합니다.이 게시물 구문을 강조 표시하는 방법을 모르겠습니다. – David

0

당신이

$('div').delegate("span", "click", function(){ 
    var div = $(this).parent(); 
    //div is the div 
}); 

을 할 경우 이벤트가 범위에있는 경우

$('span').click(function(e){ 
    var div = $(this).parent(); 
    //You could also use var div = $(this).closest('div'); which works also if the 
    //div is not the direct parent of the span 
}); 
+0

고마워요,하지만 정확히 내가 필요한 것은 아닙니다. Pls는 상단 게시물에서 내 코드 샘플을 봐. – David

+0

@ David 님이 나의 답변을 편집했습니다 –

+0

나는 처음 게시물을 편집했습니다 ... – David

관련 문제