jQuery .on点击第二次不工作

时间:2013-04-21 18:23:10

标签: jquery jquery-mobile

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',...)将点击事件绑定到列表中的元素,那么它可以正常工作。

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

有任何想法或建议吗?

3 个答案:

答案 0 :(得分:5)

尝试这种方式: - Fiddle

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

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

  

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

将“{1}}替换为”点击“。使用正确的格式。

c.onclick