2011-07-17 50 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>

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

當你這樣做,你會發現,你的處理器來自全國各地的地方獲得的點擊。爲什麼?因爲無論如何,所有這些點擊都會「泡」到身上。因此,你必須在處理什麼「目標」屬性是事件的檢查,只有到事件如果目標是註冊的元素迴應:

$('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); 
相關問題