2011-07-17 4 views
0

동일한 이벤트를 window 및 다른 요소에 한 번에 바인딩하려면 어떻게해야합니까? 나는이 시도하지만 나를 위해 작동하지 않습니다jQuery : 동일한 이벤트를 윈도우 및 다른 요소에 바인딩

$('window, #someId').bind('click', doSomething); 
+0

달성하고자하는 것은 무엇입니까? – Pointy

+0

jsFiddle에서 예제를 복사/붙여 넣기 할 수 있습니까? –

+0

비록 내가 제시 한 스 니펫이 나쁜 예임에 동의하지만, 일반적으로 두 개의 별도의 바인드 콜을 만들지 않고 위와 같은 작업을 수행하는 방법을 찾고 싶었습니다. – jeffreyveon

답변

7
$('#someId').add(window).bind('click', doSomething); 

그것을해야한다.

2

window가 요소가 아닙니다. 이 작업을 수행 할 때, 당신은 당신의 핸들러가 여기 저기에서 클릭을 얻을 수 있음을 알 수 있습니다

$('body, #someId').bind('click', doSomething); 

: 당신은 <body>에 이벤트를 바인딩 할 수 있습니다. 왜? 어쨌든 모든 클릭은 몸에 "거품을 일으킬"것입니다. 따라서 당신은 "대상"속성은 이벤트의 어떤 핸들러에 확인해야하고, 대상이 등록 된 요소 인 경우에만 이벤트에 응답 :

$('body, #someId').click(function(ev) { 
    if (this === ev.target) { 
    // do stuff 
    ev.stopPropagation(); // optional 
    } 
    else { 
    // event not relevant 
    } 
}); 

Here는 설명 jsfiddle이다가.

2
$(window).add('#someId').bind('click', doSomething); 
관련 문제