Rebind a un evento en vivo () Haga clic después de usar die ()?
Pregunta
No he podido resolver mi problema para buscar a través de Stack. Tengo mi función Live () a continuación. Puede ver cómo quiero detener el botón que se hace clic por segunda vez mientras la función se está ejecutando, y luego volver a reembolsar. El botón muere desapercibida, pero no se une de nuevo ...: 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');
}
});
Solución
No hay necesidad de desgastar y reembolsar solo use una bandera:
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;
}
});
Otros consejos
No está pasando ninguna función para .live .. intente esto:
$('.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);
}
});
Su última línea de código no une nada al controlador de clics. Debes unir una función
$('.control-left, .prevActive').live('click', function () { code here });
En tu situación probablemente te gustaría hacer algo como esto
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);
});
También jQuery 1.42 a 1.6x que debería usar
- delegar() para vincular a los elementos futuros
- UNDELEGATE () para desabrochar para eventos delegados
en jQuery 1.7+
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow