【发布时间】: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