Javascript 元素上单击事件的重复绑定解除绑定
我有点困惑,我想知道在同一个元素上绑定和解除绑定事件更好,或者我应该使用一个标志(比如“inProgress”) 我有一个场景,如果一个操作已经在进行中,我必须防止操作或事件发生,例如 我有一个锚定标记,我已经将一个事件绑定到该锚定标记,该事件处理一些ajax功能,如获取数据和更新页面的某些部分,我想要的是停止对锚定标记的重复单击,以便在锚定标记上发生第一次单击后,等待服务器的响应并更新页面的部分,我的困惑在于,是否应该在单击发生后解除事件绑定,并在处理响应后再次绑定同一个处理程序,还是应该设置一个标志来检查是否有任何处理程序正在进行,并在处理响应后将标志设置为false?以下哪种方式在性能方面更有效 非常感谢您的任何帮助/建议 谢谢使用旗帜 最好使用一些布尔变量并检查是否允许该操作,而不是调用bind和unbind(这是额外的开销) 如果使用jQuery,则可以使用在该锚上存储数据 比如: 如果您不使用jQuery,您仍然可以使用简单的JS完成同样的任务。jQuery使用“”将数据绑定到元素上。如果可以使用expando道具,请改用变量Javascript 元素上单击事件的重复绑定解除绑定,javascript,jquery,performance,Javascript,Jquery,Performance,我有点困惑,我想知道在同一个元素上绑定和解除绑定事件更好,或者我应该使用一个标志(比如“inProgress”) 我有一个场景,如果一个操作已经在进行中,我必须防止操作或事件发生,例如 我有一个锚定标记,我已经将一个事件绑定到该锚定标记,该事件处理一些ajax功能,如获取数据和更新页面的某些部分,我想要的是停止对锚定标记的重复单击,以便在锚定标记上发生第一次单击后,等待服务器的响应并更新页面的部分,我的困惑在于,是否应该在单击发生后解除事件绑定,并在处理响应后再次绑定同一个处理程序,还是应该设置
$('.testLink').on('click',function(){
//reference link
var link = $(this);
//check data
data = link.data('amIallowed');
//if no data existed yet
if(!data){
//set data and make it false to prevent further requests
link.data('amIallowed',{
allowRequest : false
});
//lets do ajax
doAjax();
}
else{ //if there was data
//and we were allowed
if(data.allowRequest){
doAjax(link);
}
}
});
//do ajax stuff here
function doAjax(link){
$.post('url',{param:val},function(){
//revert to true after request
link.data('amIallowed',{
allowRequest : true
});
});
}