如果通过正常的页面加载,下面的JS代码可以正常工作。但是,如果包含此代码的页面是通过Ajax刷新的,则会多次注册click,每次通过Ajax刷新页面时注册一次。您可以通过打印单词"Saved“的次数或通过console.log消息"#SavedBtn clicked”出现的次数来判断这一点。
当页面通过Ajax加载时,有什么方法可以取消设置click处理程序吗?
HTML:
<button type='button' id='saveBtn'></button>JS:
$(document.body).on('click', '#saveBtn', function(){
var t='<span class="savedSpan">Saved</span>';
$(this).after(t);
console.log('#saveBtn clicked');
$('.savedSpan').animate({
color: "#FFF4D2"
}, 1000).fadeOut();
});发布于 2013-03-15 01:41:17
您可以在调用on()之前调用off()。这将在添加另一个处理程序之前删除该处理程序。
代码可能如下所示:
$(document.body).off('click', '#saveBtn');
$(document.body).on('click', '#saveBtn', function(){
var t='<span class="savedSpan">Saved</span>';
$(this).after(t);
console.log('#saveBtn clicked');
$('.savedSpan').animate({
color: "#FFF4D2"
}, 1000).fadeOut();
});https://stackoverflow.com/questions/15416398
复制相似问题