die()を使用した後、ライブ()クリックイベントを再生しますか?
質問
私はスタックを通して私の問題を解決することができませんでした。以下にライブ()機能を持っています。機能が実行されているときに、ボタンを2回クリックするのを停止する方法を確認できます。ボタンはバインドされていませんが、二度とバインドしません...:s
$('.control-left, .prevActive').live('click',function(){
var firstSlide = $('.slider li:first-child');
if(firstSlide.attr('class') != 'active'){
$('.control-left, .prevActive').die('click');
moveSlider('left');
$('.control-left, .prevActive').live('click');
}
});
解決
フラグを使用するだけで、バインドしてリビングする必要はありません。
var running = false;
$('.control-left, .prevActive').live('click',function(){
var firstSlide = $('.slider li:first-child');
if(firstSlide.attr('class') != 'active' && !running){
running = true;
moveSlider('left');
running = false;
}
});
他のヒント
あなたは.liveに関数を渡していません..これを試してください:
$('.control-left, .prevActive').live('click',function hello(){
var firstSlide = $('.slider li:first-child');
if(firstSlide.attr('class') != 'active'){
$('.control-left, .prevActive').die('click');
moveSlider('left');
$('.control-left, .prevActive').live('click', hello);
}
});
コードの最後の行は、クリックハンドラーに何もバインドしません。関数にバインドする必要があります
$('.control-left, .prevActive').live('click', function () { code here });
あなたの状況では、おそらくこのようなことをしたいと思うでしょう
var myspecialclickfunction = function(){
var firstSlide = $('.slider li:first-child');
if(firstSlide.attr('class') != 'active'){
$('.control-left, .prevActive').die('click');
moveSlider('left');
$('.control-left, .prevActive').live('click', myspecialclickfunction);
};
$(document).ready(function () {
$('.control-left, .prevActive').live('click',myspecialclickfunction);
});
また、使用する必要があるjquery 1.42〜1.6x
- DELEGATE() 将来の要素への結合のため
- undelegate() 委任されたイベントのバインディングのために
jquery 1.7+で
- DELEGATE(), 練る(), 、 と 住む() に組み合わされています の上()
- undelegate(), 解放する() と die() に組み合わされています オフ()
- さらに、があります 1() 追加すると、バインドされたイベントが1回だけ実行できます。
所属していません StackOverflow