【问题标题】:Strange behavior using live event on IE10 with jQuery使用 jQuery 在 IE10 上使用实时事件的奇怪行为
【发布时间】:2013-05-08 23:49:02
【问题描述】:

我有以下代码:

$('input.test2').live('keyup', function (e) {
});

$('input.test1').live('change', function (e) {
});

test1 和 test2 是同一个输入元素的类。但只有 test1 被触发。

有人可以向我解释为什么会这样吗? (它只发生在 IE10 上)。 我尝试返回 false 或 e.stopPropagation() 但没有任何改变。

【问题讨论】:

  • 但是发生了什么?
  • “谁能向我解释为什么会这样?” .. 为什么会这样?
  • 为什么没有触发第二个...如果我将“更改”更改为“点击”,它可以正常工作:/

标签: events jquery live


【解决方案1】:

尝试使用“on”而不是“live”

$('input.test1').on('change', function (e) {
});

$('input.test2').on('keyup', function (e) {
});

根据 jQuery 文档:
http://api.jquery.com/live/

“从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。旧版本 jQuery 的用户应优先使用 .delegate() 而不是 .live()。”

【讨论】:

  • on 的语法与live 的语法完全不同,所以不能只替换方法名。您已将委托替换为常规绑定,因此如果元素在绑定时不存在,则永远不会处理事件。
猜你喜欢
  • 2012-09-17
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 2014-10-13
  • 1970-01-01
  • 2018-04-10
  • 1970-01-01
相关资源
最近更新 更多