ライブを使用してクリックイベントをボタンに割り当てようとしていますが、ユーザーがトリガーできるのは1回だけです。とにかくそれをすることはありますか?
//I only want the alert show once and disable the click event...
$('#testBtn').live('click', function(){
alert('hey ya');
})
注意:ボタンは動的に作成されます。
ライブを使用してクリックイベントをボタンに割り当てようとしていますが、ユーザーがトリガーできるのは1回だけです。とにかくそれをすることはありますか?
//I only want the alert show once and disable the click event...
$('#testBtn').live('click', function(){
alert('hey ya');
})
注意:ボタンは動的に作成されます。
one()
委任されたハンドラー(jQuery 1.7以降)でも使用でき、非推奨のlive()
関数を次のようなものに置き換えることができます。
$(document).one('click', '#testBtn', function(){
alert('hey ya');
});
document
最も近い非動的な親に置き換えます。
one
次の機能を使用できます。
$('#testBtn').one('click', function(){
alert('hey ya');
})
デモ: http: //jsfiddle.net/SEjYK/
最良のオプションは、ボタンにライブではなく.oneを使用することです。それはもっと理にかなっています。それを使用したくない場合は、ページで非表示フィールドを使用できます。クリックイベントがトリガーされたら、フラグ値を設定します。
次回ボタンをクリックしたときにフラグ値を確認します。すでに一度実行されている場合は、その中のコードを実行しないでください。
この例を確認してください http://jsfiddle.net/sushanth009/Fakb5/
また、現在のjQueryバージョンでは.liveが非推奨になっていることにも注意してください。代わりに.on()を使用することをお勧めします
あなたはおそらく最も速く走るこの方法でそれをすることができます..jsperf.comでチェックするつもりです
$('#testBtn').bind('click', function() {
$(this).unbind('click');
alert('Clicked and unbound!');
});
編集:これは、追加された3つのテストケースの中で最も速く実行されると思います-http ://jsperf.com/one-event を2〜3回実行して、最良の結果を取得します。実行するたびに、バインドが最も速く、1つが3%遅くなります。 。
使用one()
:
$('#testBtn').one('click', function(){
alert('hey ya');
})
$('#testBtn').one('click', function() {
alert('hey ya');
});
お役に立てれば!
編集:絶対に「ライブ」を使用したい場合:
$('#testBtn').live('click', function() {
$(this).die('click');
alert('hey ya');
});
'one'を使用する場合は、動的オブジェクトを生成してドキュメントに追加した後、最初のコードスニペットを実行するだけです。
ライブは非推奨であるため、「オン」を使用することをお勧めしますが、「ライブ」タイプのアプローチを使用している場合:
$(document).on('click', '#testBtn', function() {
$(this).die('click');
alert('hey ya');
});
このページにはすでにもっと賢明な回答がありますが、.live()
代わりに使用することを主張する場合one()
、これはあなたが求めることを行います...
//I only want the alert show once and disable the click event...
$('#testBtn').live('click', function(){
$(this).die('click');
alert('hey ya');
});
.die('click')
クリック イベント ハンドラが削除されるため、再度発生することはありません。
unbindを使用して、すべてのクリックイベントを削除できます。
$('#testBtn').unbind('click');
$('#testBtn').unbind('live');