【问题标题】:Wire up different events and different selectors to same function将不同的事件和不同的选择器连接到相同的功能
【发布时间】:2013-01-11 23:52:33
【问题描述】:

假设我有一些这样的代码:

$('#mywrapper')
    .on('click', 'button', myFunction)
    .on('change', 'input', myFunction)
;

有没有更有效的方法将事件和选择器连接到同一个函数?

【问题讨论】:

  • 该死...你的代码能缩短多少?
  • 似乎已经很高效了
  • 这样做的原因是我希望这两个事件始终联系在一起,因为它们本质上表示相同的动作。

标签: jquery event-delegation


【解决方案1】:

不,实际上并非如此。这里唯一真正的变化是您可以将一个对象传递给 .on() ,它将一次性定义您的所有事件:

$("div.test").on({
  click: myFunc,
  mouseenter: myFunc
});

【讨论】:

  • 这只会将一个选择器连接到一系列事件。我希望一个回调有多个选择器和多个事件
  • 理论上,您可以在一个绑定中移动多个事件和多个选择器:$('#something').on('click change', 'button, input', myFunc)。这里的问题是,现在您已将事件绑定到可能没有意义并导致奇怪功能的元素。就像绑定到输入字段的“点击”事件例如..
  • 正确。这就是为什么我首先要问这个问题:) 我可以接受没有更好的方法,我只是想知道是否有。
【解决方案2】:

您可以使用“普通对象”同时传递两者:

$('#mywrapper').on({
    click: myFunc,
    mouseenter: myFunc
});

jQuery .on()(底部示例)

【讨论】:

  • 正如我向@joeltine 指出的那样,这会将一个选择器连接到多个事件,但不会将多个选择器和多个事件连接到一个回调
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 2010-10-29
  • 2022-11-16
相关资源
最近更新 更多