2011-12-23 9 views
-3

可能性の重複:
is there a way to force event to fire only once on given element (per element, not whole document) when using live()?.live無効ダブルクリック

これは私のコードです:

$('.answerx').live('click', function(){ 
    comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'"); 
}) 

私はクリックがされた後ようにそれを作りたいです何度も実行されている関数が私のプログラムを狂わせてしまうので、ユーザーは関数を再度クリックして実行することができません。

ので、それを作るための方法があるので、それはそのID $(this).attr('id')

答えて

3

で、次のようなクリックされたオブジェクトをマークすることができ、特定の要素の上に、さらにクリックを無効にしたら、クリックした後。それを行うには多くの方法があります。たとえば、クラスを追加します。

$('.answerx').live('click', function(){ 
    if(!$(this).hasClass('disabled')) { 
    comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'"); 
    $(this).addClass('disabled'); 
    } 
}) 

クラスを追加するメリットは、無効な要素をそれぞれスタイル設定できることです。

+0

を使用クリックされたもの? – Jake

+0

これは正しいです。 –

+0

この回答が参考になったら、それを受け入れるべきです:-) –

1

それをシンプルに保つ:

var boolHasBeenRun = false; 
$('.answerx').live('click', function(){ 
    if(boolHasBeenRun === false){ 
     comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'"); 
     boolHasBeenRun = true; 
    } 

}); 

それとも

$('.answerx').live('click', function(){ 
     comprobar($(this).attr('name') , "\'" + $(this).attr('id') + "\'"); 
     $('.answerx').die('click');   

}); 

かそこらに関係なく、私は.answerxを持っているどのように多くの要素、これが唯一のものに適用されません現代.off()

+1

ここで 'unbind'は動作しません。 'bind'でバインドされたイベントハンドラだけをアンバインドします。 –

+0

ありがとうございました。 –

+0

そして、「die」の問題は、クリックされたものだけでなく、すべての要素のイベントハンドラを削除することです。 –

関連する問題