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();
});