, 해결 방법은 선택한 요소에 자신을 이벤트 핸들러를 첨부 할 수 :
$('.tabs').click(function(event) {
event.root = this; // or whatever name suits you best
});
$(".tabs").delegate("li:not(.selected) a", "click", function (event) {
// event.root contains the DOM element
});
jQuery를 해당 이벤트 핸들러가 부착 된 순서대로 실행됩니다 보장합니다.
또는 전혀 delegate
를 사용하고 (이것은 아마 최고의 솔루션입니다 )를 선택기 자신을 테스트하지 않습니다
$('.tabs').click(function(event) {
if($(event.target).is("li:not(.selected) a")) {
// this refers to the .tab DOM element
// event.target refers to the originally clicked element
}
});
업데이트 :
원래 Event
개체는 event.originalEvent
을 통해 사용할 수 있습니다.
$(".tabs").delegate("li:not(.selected) a", "click", function (event) {
var dom = event.originalEvent.currentTarget;
});
을하지만 currentTarget
는 IE9에서 지원됩니다 보인다 낮은 IE 버전의 대안이없는 : 그래서 당신은 할 수 있습니다.
그래서 대부분의 브라우저 간 호환 솔루션은 여전히 위의 것들입니다.
왜 당신은 선택을해야합니까? – BoltClock
선택기 또는 무엇이든간에. '익명'방식으로 .tab에 액세스 할 수있는 한, 아마도 li의 부모 탐색보다 더 나은 해결책 일 수 있습니다. 페이지에는 다른 탭이있어 조금씩 다르게 처리해야합니다. –
'.selector'가 여기에서 작동하지 않는 이유는 선택기 문자열 대신 DOM 객체 인'this'를 감싸는 jQuery 객체에서 액세스하려고하기 때문입니다. – BoltClock