【问题标题】:Binding jQuery click event on a wrapped set在包装集上绑定 jQuery 点击事件
【发布时间】:2012-06-13 00:24:30
【问题描述】:

假设我在一个页面上有多个 <span class='remove-type'> 元素。

在 jQuery document.ready 中,即使我正在调用 $('.remove-type').on('click', removeType);

removeType 是本地定义的函数。

出于某种原因,removeType(data) 仅在第一次单击任何 .remove-type 范围时才会被调用和执行。随后的点击不会触发功能。这是 jQuery .on 事件绑定的正确行为吗?

附加信息:我确实删除了生成单击事件的项目的容器,但其他 remove-type 跨度仍然存在。

【问题讨论】:

  • 无法复制 (jsfiddle.net/hrCX4/1)。您确定您的 HTML 标记没有错误吗?
  • removeType() 在做什么?
  • 尝试使用.live,他们声称.on 替换了它,但是对于点击事件,它通常不会。 .live 倾向于实际保持活动状态,以便承载该类的新元素也将收到点击事件。 $('.remove-type').live('click', removeType);
  • 大多数使用 on 的问题是,为了让它像 live 一样工作,你必须像这样添加它 $(container).on('event', selector, function)... 通常像 $(document).on('click', 'a.whatever', function(){});
  • .on() 确实取代了 .live(),只需学习如何使用它

标签: javascript jquery binding click


【解决方案1】:

您只是在使用.on() 设置一个单击处理程序,就像您当前正在使用它一样。 on() 函数应该看起来像

$(document).on('click', '.remove-type', function()...

【讨论】:

  • 可能不使用文档 - 使用更本地的容器。例如,文档很好!
  • 完全同意。如果对代码没有更广泛的了解,我无法提供具体的委派地点。
猜你喜欢
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 2010-12-20
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多