0

我有一些点击功能......整个动作都很好,但如果我快速双击呼叫按钮,一些元素会生成两次。你能告诉我第一次点击后如何停止函数传播吗?非常感谢帮助,这是我的代码:

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

5 回答 5

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){
于 2012-09-04T11:56:21.937 回答
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++;


 });
于 2012-09-04T11:58:44.230 回答
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();
});
于 2012-09-04T11:59:03.383 回答
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);
于 2012-09-04T11:57:04.147 回答
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();
});
于 2012-09-04T12:02:16.837 回答