首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery点击事件

jquery点击事件
EN

Stack Overflow用户
提问于 2010-09-03 22:40:37
回答 2查看 117关注 0票数 2

我有一些像这样的jquery,

代码语言:javascript
复制
    $('.career_select .selectitems').click(function(){
    var selectedCareer = $(this).attr('title');
    $.ajax({
        type: 'POST',
        url: '/roadmap/step_two',
        data: 'career_choice='+selectedCareer+"&ajax=true&submit_career=Next",
        success: function(html){
            $('.hfeed').append(html);
            $('#grade_choice').SelectCustomizer();
          }
    });
});

我的问题是,如果用户一直点击,那么.hfeed就会不断获得附加的数据。如何将其限制为只能点击一次?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-03 22:41:49

使用one函数:

将处理程序附加到元素的事件。处理程序在每个元素上最多执行一次

如果您希望元素只单击一次,然后在请求完成后重新启用,您可以:

A)保留一个状态变量,如果请求当前正在进行,该变量会更新;如果正在进行,则在事件的顶部退出。

B)使用one,将您的代码放在函数中,并在请求完成后重新绑定。

第二个选项如下所示:

代码语言:javascript
复制
function myClickEvent() {
    var selectedCareer = $(this).attr('title');
    var that = this;

    $.ajax({
        type: 'POST',
        url: '/roadmap/step_two',
        data: 'career_choice='+selectedCareer+"&ajax=true&submit_career=Next",
        success: function(html){
            $('.hfeed').append(html);
            $('#grade_choice').SelectCustomizer();
        },
        complete: function() {
            $(that).one('click', myClickEvent);
        }
    });
}

$('.career_select .selectitems').one('click', myClickEvent);
票数 2
EN

Stack Overflow用户

发布于 2010-09-03 22:49:48

您可以使用全局变量,如

代码语言:javascript
复制
var added = false;
$('.career_select .selectitems').click(function(){
    if(!added) {
        // previous code here
        added = true;
    }
});

或者使用.one("click", function () { ... })而不是前面的单击函数来为每个元素最多执行一次处理程序。有关更多详细信息,请参阅http://api.jquery.com/one/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3636824

复制
相关文章

相似问题

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