如何在第一次单击jQuery后停止函数传播

时间:2012-09-04 11:55:01

标签: javascript jquery click stoppropagation

我有一些点击功能...整个动作很好但如果我快速双击通话按钮,一些元素会产生两次。你能告诉我如何在第一次点击后停止功能传播吗?很多求助,这是我的代码:

$('#start_panel ul li').click(function(event){
    if($(this).hasClass('eng')){
       ...
    }
    else if($(this).hasClass('ger')){
       ...
    }
    else if($(this).hasClass('pln')){
       ...
    }
    event.stopPropagation();
});

5 个答案:

答案 0 :(得分:3)

var clicked = false;
$('#start_panel ul li').click(function(event){
   if (clicked) return;
   clicked = true;

或使用one功能(略有不同:现在只需点击一下每个li元素):

 $('#start_panel ul li').one('click', function(event){

答案 1 :(得分:0)

请改为尝试:

var myClicker = function(event){
    var self = event.currentTarget;
    if($(self).hasClass('eng')){
       ...
    }
    else if($(self).hasClass('ger')){
       ...
    }
    else if($(self).hasClass('pln')){
       ...
    }
    $(self).one('click', myClicker);
});
$('#start_panel ul li').one('click', myClicker);

答案 2 :(得分:0)

 var i=0;
$('#start_panel ul li').click(function(event){
 if(i==1){
  i=0;
 return false;
  }
if($(this).hasClass('eng')){
   ...
}
else if($(this).hasClass('ger')){
   ...
}
else if($(this).hasClass('pln')){
   ...
}
 i++;


 });

答案 3 :(得分:0)

要清除之前的请求,请使用Stop(true,true)

$('#start_panel ul li').stop(true,true).click(function(event){
    if($(this).hasClass('eng')){
        ...
    }
    else if($(this).hasClass('ger')){
       ...
    }
    else if($(this).hasClass('pln')){
       ...
    }
    event.stopPropagation();
});

答案 4 :(得分:0)

您可以在第一次点击后取消绑定点击事件:

$('#start_panel ul li').click(function(event){
    $(this).unbind('click'); 
    if($(this).hasClass('eng')){
       ...
    }
    else if($(this).hasClass('ger')){
       ...
    }
    else if($(this).hasClass('pln')){
       ...
    }
    event.stopPropagation();
});