首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在()上使用jQuery时取消设置Ajax之后的事件处理

在()上使用jQuery时取消设置Ajax之后的事件处理
EN

Stack Overflow用户
提问于 2013-03-15 01:39:21
回答 1查看 93关注 0票数 1

如果通过正常的页面加载,下面的JS代码可以正常工作。但是,如果包含此代码的页面是通过Ajax刷新的,则会多次注册click,每次通过Ajax刷新页面时注册一次。您可以通过打印单词"Saved“的次数或通过console.log消息"#SavedBtn clicked”出现的次数来判断这一点。

当页面通过Ajax加载时,有什么方法可以取消设置click处理程序吗?

HTML:

代码语言:javascript
复制
<button type='button' id='saveBtn'></button>

JS:

代码语言:javascript
复制
$(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();                           
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-15 01:41:17

您可以在调用on()之前调用off()。这将在添加另一个处理程序之前删除该处理程序。

代码可能如下所示:

代码语言:javascript
复制
$(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();                           
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15416398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档