2011-11-06 2 views
8

어떻게하면됩니까?event.target을 기존 jQuery 객체와 일치 시키십시오.

event.target은 HTML 개체,

를 반환하고 내 요소는 jQuery를 개체입니다.

ID 또는 클래스를 비교하는 것 외에 event.target = my_jquery_object를 찾는 더 좋은 방법이 있습니까?

나는 ... 그것은 동일한 개체, 유사한 클래스 다만 요소입니다 있는지 확인하려면

내가 $(event.target) !== the_element으로 노력하고

the_element가 $('.something', $(this))

로 시작 부분에 정의 된 실패

사용자가 외부에서 클릭 할 때 상자가 닫히지 만 처음에 상자를 연 링크에서 클릭이 수행되지 않은 상태에서 상자를 닫으려고합니다.

그래서 나는이 있습니다

$(document).click(function(event){ 
    if(($(event.target).parents().index(box) == -1) 
    && box.is(':visible')){ 
     close(); 
    } 

}); 

을 그리고 클릭이 상자를 열어 링크를 만들어되지 않았 음을 확인하는 또 다른 조건을 추가하고 싶습니다.

이 작동하지만, 나는 그것을 좋아하지 않아 :

if($(event.target).attr('id') != the_element)

:

답변

9

.get(0) 또는 간단히 the_element[0]을 사용하여 jQuery에서 실제 DOM 요소를 가져올 수 있습니다. 그래도 jQuery로 확인하는 것이 좋습니다.

if (the_element.is(event.target)) 
{ 
    ... 
} 

귀하의 예제를 사용 : 아무도 질문을 이해할 수없는 것처럼

$(document).click(function(event){ 
    if (the_element.is(event.target)) { 
     return false; 
    } 
    if(($(event.target).parents().index(box) == -1) 
    && box.is(':visible')){ 
     close(); 
    } 

}); 
5

시도 -

if(event.target === the_element[0]) 

the_element[0] 당신의 jQuery 객체를 풀다하고 '정상를 반환해야 'DOM 객체이면, event.target에 의해 반환 된 DOM 객체와 비교할 수 있습니다.

-2

어쩌면 내가 틀렸다,하지만 보이는 ... 나는 또한 내가 사용하는 JQUERY 오브젝트를 취득하는 방법을 알고 싶어요 listener 함수는 EVENT.TARGET에서 가져 왔지만 jquery 객체의 DOM 노드는 아닙니다 !!)) 그래서 ...나는 아주 편리하지 찾았지만 작업 솔루션 :

var elem = $('<input type="text" class="input" />'); 
elem.focus($.proxy(function(e) 
{ 
    this.onInpFocus(e, elem); 
}, this)); 

그리고 2 개 인자받을 수있는 리스너의 콜백 메소드 수정 :

onInpFocus : function(e, inp) 

대신 같은 간단한 방법을 사용하여 :

elem.focus($.proxy(this.onInpFocus, this)); 
-2

을 사실, 훨씬 더 편리한 다른 방법을 찾았습니다. 데이터 인수를 사용해야합니다.

이벤트가 이 트리거 될 때 event.data의 핸들러에 전달할 데이터입니다.

지금 내 코드는 다음과 같습니다

var inp = $('<input type="text" />'); 
inp.focus({ j : inp } , $.proxy(this.onInpFocus, this)); 

//and the handler method 
onInpFocus : function(e) 
{ 
var inp = e.data.j; 
... 
} 
관련 문제