jQuery:将相同的事件绑定到窗口和另一个元素

时间:2011-07-17 13:05:08

标签: javascript jquery bind

如何将同一事件绑定到window以及一次性绑定另一个元素。我尝试过这个,但它对我不起作用:

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

3 个答案:

答案 0 :(得分:7)

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

应该这样做。

答案 1 :(得分: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 :(得分:2)

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