jQuery .on点击第二次不工作

var elms = $('.selector', list); elms.off(); elms.on('vclick', function(event, ui) { event.preventDefault(); var elm = $(this); customEventHandler(elm, elm.attr("id")); }); 

如果我通过$('.selector', list).on('click',...)将click事件绑定到$('.selector', list).on('click',...)中的元素,它可以正常工作。

如果我在对列表执行.append()之后添加元素并再次调用$('.selector', list).on('click',...)不会触发任何单击。 即使我之前使用.off()删除旧事件。

有什么想法或建议吗?

试试这种方式: – 小提琴

 $('.container').on('click', '.selector', function(event, ui) { event.preventDefault(); var elm = $(this); alert(elm.index()); }); 

您可以使用delegated events方法实现此目的。

委托事件的优点是,它们可以处理来自稍后添加到文档的后代元素的事件 。 通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委派事件来避免频繁附加和删除事件处理程序。 例如,此元素可以是模型 – 视图 – 控制器设计中视图的容器元素,如果事件处理程序想要监视文档中的所有冒泡事件,则可以是文档。 在加载任何其他HTML之前,文档元素在文档的头部可用,因此可以安全地将事件附加到那里而无需等待文档准备就绪。

终于找到了问题,我不得不在调用list.trigger(“create”)后绑定事件; 而不是之前,也许这对任何人都有帮助……

用’click’替换c.onclick 。 使用正确的格式。

 $('.container').on('click', '.selector', function(event, ui) { event.preventDefault(); var elm = $(this); alert(elm.index()); });