Einen Live () -Klickereignis nach Verwendung von Die () neu auszahlen?
Frage
Ich konnte mein Problem nicht durch Stack suchen. Ich habe meine Live () -Funktion unten. Sie können sehen, wie ich die Schaltfläche stoppen möchte, die ein zweites Mal geklickt wird, während die Funktion ausgeführt wird, und dann wieder aufzunehmen. Der Knopf stirbt ungebrannt, aber er bin nicht wieder gebunden ...: 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');
}
});
Lösung
Keine Notwendigkeit, sich zu entbinden und wieder zu wiederherstellen, nur eine Flagge verwenden:
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;
}
});
Andere Tipps
Sie übergeben keine Funktion an .Live .. Versuchen Sie Folgendes:
$('.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);
}
});
Ihre letzte Codezeile bindet nichts an den Klick -Handler. Sie müssen eine Funktion binden
$('.control-left, .prevActive').live('click', function () { code here });
In Ihrer Situation möchten Sie wahrscheinlich so etwas tun
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);
});
Auch JQuery 1.42 bis 1.6X Sie sollten verwenden
- delegieren() Für die Bindung an zukünftige Elemente
- unelegiert () für die Entfernung für delegierte Ereignisse
in JQuery 1.7+
- delegieren(), binden(), und live() wurden in der kombiniert an()
- unelegiert (), lösen() und sterben() wurden in der kombiniert aus()
- Außerdem gab es die eines() Es wird hinzugefügt, dass ein gebundenes Ereignis nur einmal ausgeführt wird.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow