jQuery: vivo () - sólo se vive una vez?
-
28-09-2019 - |
Pregunta
Estoy siguiendo este hilo para activar / desactivar el clic de un botón, mejor manera de quitar un controlador de eventos en jQuery?
su idea es que también se puede utilizar el método directo () para activar / desactivar los eventos. ¿Qué pasará con este código es que cuando se hace clic en un elemento de una etiqueta, por ejemplo, .load-elemento, que se sumará a la clase desactivado este elemento. Esto hará que sea por lo que el selector ya no coincide con el elemento y el evento no se disparará hasta que se retire la clase 'discapacitados' haciendo que el selector de .live () válido de nuevo.
A continuación se muestra lo que salió y lo hace con desactivar el clic en el primer botón,
$('.load-item:not(.disabled)').live('click',function(){
/* add a .current class to the target item */
$(this).parentsUntil('.column-global').addClass('current');
/* add .disabled class to each a tag in the .current element-div */
$('.current a').each(function(index) {
$(this).addClass('disabled');
});
....
});
y tengo otra función para eliminar la clase desactiva cuando se hace clic en otro botón,
$('.button-return').click(function(){
...
/* remove all the .disabled class if any exists */
$('.current a').each(function(index) {
$(this).removeClass('disabled');
});
...
/* remove all the .current class if any exists */
$('.item-global').removeClass('current');
return false;
});
He comprobado que no retire la clase desconectado, pero el primer botón todavía no es volver al estado original, se puede hacer clic.
he perdido nada - o el live () en realidad sólo se vive una sola vez? ninguna solución mejor si vivo () no es la que deben trabajar en ??
gracias.
Solución
Sus necesidades botón volverá a ser un evento en vivo, así
$('.button-return:not(disabled)').live("click",function(){...});
También al usar addClass () y removeClass () no es necesario utilizar cada uno en el selector. Sólo tiene que llamar a él.
$('.current a').each(function(index) {
$(this).removeClass('disabled');
});
es la misma que esta ??p>
$('.current a').removeClass('disabled');
Editado
Nota cuando se agrega el evento en directo para el botón de retorno tiene que comprobar que no está desactivada.
Funciona perfectamente que aquí hay una sencilla demostración http://www.jsfiddle.net/Qax3n/
Otros consejos
Debe tener algo que ver con su diseño HTML o Javascript otra. Las siguientes obras: http://jsfiddle.net/EEJEh/