我有这条jQuery:

$('#team-members .team-thumb').on('click', function(e){
        e.preventDefault();
        var member = $(this).data('member');
        $('#team-members .team-profiles').slideToggle();
        teamSlider.reloadSlider({
            startSlide: member,
            pager: false,
            adaptiveHeight: true
        });
        $('html,body').animate({
            scrollTop: $("#team-profiles").offset().top},
        'fast');
        $('.bx-viewport').prepend('<div id="slide-me"></div>');
    });


我如何使其仅在事件之前添加一次,因此在第二次单击时不会将其添加到DOM:

$('.bx-viewport').prepend('<div id="slide-me"></div>');

最佳答案

使用jQuery的one() command:

$('#team-members .team-thumb').one('click', function(e){ ... }



说明:将处理程序附加到元素的事件。每个事件类型的每个元素最多只能执行一次处理程序。


除了此内置命令外,您始终可以使用布尔值标志:

var event_handler_enabled = true;
$('#team-members .team-thumb').one('click', function(e){
  if ( event_handler_enabled ){
    // code for handling click goes here
    event_handler_enabled = false; // ensure this code will not be executed again
  }
}


我建议第一个选择。没有理由重新发明轮子。如果jQuery具有仅执行一次处理程序的内置方法,请使用它! :)

关于jquery - 单击处理程序触发事件仅一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19705304/

10-12 12:30
查看更多