Javascript jQuery动态调用事件侦听器
我有一个大问题: 在我的页面上有许多Div容器,其中包含类“.element”,我使用jQuery将其设置为可拖动。 现在,我可以使用类“element”动态创建div,并且我想让它们也可以拖动。 所以我想:简单的解决办法:我只要打电话 $(“.element”).draggable() 再说一遍。但是:整个侦听器执行两次,这对我来说是不可接受的,因为它发送AJAX请求,我不希望它们被发送两次 所以我开始让函数只在新创建的元素上调用draggable,我想这有点愚蠢 所以我的问题是:既然live()-方法被弃用了(我认为这是一个很大的错误),有没有更好的可能性呢 请帮帮我 亲切问候,,Javascript jQuery动态调用事件侦听器,javascript,jquery,ajax,jquery-ui,Javascript,Jquery,Ajax,Jquery Ui,我有一个大问题: 在我的页面上有许多Div容器,其中包含类“.element”,我使用jQuery将其设置为可拖动。 现在,我可以使用类“element”动态创建div,并且我想让它们也可以拖动。 所以我想:简单的解决办法:我只要打电话 $(“.element”).draggable() 再说一遍。但是:整个侦听器执行两次,这对我来说是不可接受的,因为它发送AJAX请求,我不希望它们被发送两次 所以我开始让函数只在新创建的元素上调用draggable,我想这有点愚蠢 所以我的问题是:既然live
David一个快速解决方案是使用
数据属性作为标志
$(".element:not(data-draggable='1')")
.draggable()
.attr("data-draggable","1");
注意:live
方法已被弃用,但您可以在上使用使用event.stopPropagation()
在您的事件中..它将停止事件以触发两次
我希望它对您有用…您可以使用“on”而不是live,只是为了说明,“on”不一定像“live”一样工作。我发现,要将侦听器附加到动态创建的元素而不是“live”,您需要以以下方式使用:$('body')。on('click','#myElement',function(){//do stuff});。'“body”可以替换为任何容器元素,具体取决于您希望获得的粒度。要针对所有内容,只需使用文档而不是“body”。