Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery动态调用事件侦听器_Javascript_Jquery_Ajax_Jquery Ui - Fatal编程技术网

Javascript jQuery动态调用事件侦听器

Javascript jQuery动态调用事件侦听器,javascript,jquery,ajax,jquery-ui,Javascript,Jquery,Ajax,Jquery Ui,我有一个大问题: 在我的页面上有许多Div容器,其中包含类“.element”,我使用jQuery将其设置为可拖动。 现在,我可以使用类“element”动态创建div,并且我想让它们也可以拖动。 所以我想:简单的解决办法:我只要打电话 $(“.element”).draggable() 再说一遍。但是:整个侦听器执行两次,这对我来说是不可接受的,因为它发送AJAX请求,我不希望它们被发送两次 所以我开始让函数只在新创建的元素上调用draggable,我想这有点愚蠢 所以我的问题是:既然live

我有一个大问题: 在我的页面上有许多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”。