0

クリック機能があります...アクション全体は問題ありませんが、呼び出しボタンをすばやくダブルクリックすると、一部の要素が2回生成されます。最初のクリック後に関数の伝播を停止する方法を教えてください。助けを求める多くのthx、そしてこれは私のコードです:

$('#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;

または、1つの関数を使用します(わずかに異なります:li要素ごとに1回のクリックのみが処理されます):

 $('#start_panel ul li').one('click', function(event){
于 2012-09-04T11:56:21.937 に答える
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
 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

最初のクリック後にクリックイベントのバインドを解除できます。

$('#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 に答える