Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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
Jquery 当I';m动态加载,如何避免?_Jquery_Events_Dynamic_Bind - Fatal编程技术网

Jquery 当I';m动态加载,如何避免?

Jquery 当I';m动态加载,如何避免?,jquery,events,dynamic,bind,Jquery,Events,Dynamic,Bind,我动态加载内容,如下所示: $.post('main/test', data,function(resp){ $('#container').html(resp); }); 容器只是 “主/测试”包含以下脚本: $('body').on('click','#login-logs',function(e){ e.preventDefault(); $('#login-logs-last').toggle(); $('#login-logs-details').toggle()

我动态加载内容,如下所示:

$.post('main/test', data,function(resp){
    $('#container').html(resp);
});
容器只是

“主/测试”包含以下脚本:

$('body').on('click','#login-logs',function(e){
  e.preventDefault();
  $('#login-logs-last').toggle();
  $('#login-logs-details').toggle();
});
现在的问题是,我可以多次加载此页面“main/test”,每次加载时,事件都会再次绑定

因此,当我第一次加载它并单击#登录日志时,它会像预期的那样工作(最后隐藏#登录日志并显示#登录日志详细信息),但是当我再次加载页面时,它会执行相反的操作,第三次再次工作,依此类推

所以问题是,我如何才能使('click','#login logs')事件在我第一次动态加载页面时只绑定一次?而不是每次我加载页面时…


为什么??我希望用户能够前后浏览不同的页面,这意味着“主/测试”页面将被加载多次。

您将使用
off()
删除以前的处理程序,然后再使用
on()
附加新的处理程序:


在使用
打开()附加新的处理程序之前,您将使用
关闭()删除上一个处理程序。


谢谢,正是我需要的。也就是说,我有很多这样的事件,所以如果存在可以同时“关闭”它们而不是将它们添加到每个事件中的东西,那就太好了。
$('body')。off('click')
可能会删除任何附加到主体上的单击处理程序。我认为这样更简单:
$('edit btn')。off('click')。on('click',function(){/#代码…})
@AbdelalimHassouna-如果OP实际上有一个带有
.edit btn
类的元素,并且没有使用委派事件…哦,等等,那么这根本不是问题所要求的,但它确实看起来更简单?@adeneo但是问题有
#登录日志
,这基本上是相同的,正是我所需要的。尽管如此,我有很多这样的事件,所以如果存在一个可以同时“关闭”它们的东西,而不是将它们添加到每个事件中,那就太好了。
$('body')。off('click')。
可能会删除任何附加到body上的click处理程序。我认为这样更简单:
$('.edit btn')。off('click')。on('click',function(){/#code…)
@AbdelalimHassouna-如果OP实际上有一个带有
.edit btn
类的元素,并且没有使用委派事件…哦,等等,那么这根本不是问题所要求的,但确实看起来更简单?@adeneo但是问题有
#登录日志
,这基本上是一样的
$('body').off('click','#login-logs')
         .on('click','#login-logs',function(e){
              e.preventDefault();
              $('#login-logs-last, #login-logs-details').toggle();
});