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.

¿Fue útil?

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

$('.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/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top