javascript - jquery点击事件

标签 javascript jquery ajax dom

我有一些看起来像这样的 jquery,

    $('.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 会一直向其附加数据。如何限制它只能点击一次?

最佳答案

使用 one功能:

Attach a handler to an event for the elements. The handler is executed at most once per element

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

A) 保留一个状态变量,如果请求当前正在进行则更新,如果是则在事件顶部退出。
B) 使用one,将您的代码放入函数中,并在请求完成后重新绑定(bind)。

第二个选项看起来像这样:

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

关于javascript - jquery点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3636824/

相关文章:

javascript - Expressjs passport-local 无法注销

javascript - 是否可以使用 Jquery 按连续顺序重新分配 div 的子类

javascript - .getScript() 等同于 MooTools?

jquery - 如何像另一个一样使用同一个类切换单个元素

jquery - 为什么这个简单的 jQuery 传输效果不起作用?

javascript - 表单数据未发送到服务器

javascript - jquery ajax无法循环遍历找到的数据

javascript - 分组图表栏上的 d3 栏标签

jquery - 边框半径不适用于 chrome 中的相对定位图像

javascript - 使用 jQuery 更新图像源