jquery: live () - живет только один раз? - PullRequest
3 голосов
/ 04 ноября 2010

Я следую за этой веткой, чтобы отключить / включить нажатие на кнопку, Лучший способ удалить обработчик событий в jQuery?

Его идея заключается в том, что вы также можете использовать живую() метод для включения / отключения событий.Что произойдет с этим кодом, так это то, что когда вы щелкаете элемент тега, например, .load-item, он добавляет класс, отключенный к этому элементу.Это сделает так, что селектор больше не будет соответствовать элементу, и событие не будет запущено до тех пор, пока не будет удален класс «disabled», в результате чего селектор .live () снова станет действительным.

Ниже я пояснилс и он отключает нажатие на первую кнопку,

$('.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');
});

....

});

, и у меня есть другая функция для удаления класса инвалидов, когда вы нажимаете на другую кнопку,

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

});

У меня естьпроверил, что он удаляет отключенный класс, но первая кнопка все еще не вернулась к исходному кликабельному состоянию.

я что-то пропустил - или live () на самом деле живет только один раз?какие-нибудь лучшие решения, если live () - это не то, над чем я должен работать ??

спасибо.

Ответы [ 2 ]

1 голос
/ 04 ноября 2010

Ваша кнопка возврата также должна быть активным событием

$('.button-return:not(disabled)').live("click",function(){...});

Также при использовании addClass () и removeClass () вам не нужно использовать каждый из них в селекторе.Просто назовите его.

$('.current a').each(function(index) {
    $(this).removeClass('disabled');
});

- то же самое, что и это

$('.current a').removeClass('disabled');

Отредактировано

Обратите внимание, когда вы добавляете живое событиек кнопке возврата нужно убедиться, что она не отключена.

Она отлично работает, вот простая демоверсия. http://www.jsfiddle.net/Qax3n/

0 голосов
/ 04 ноября 2010

Это должно быть как-то связано с вашим HTML-макетом или другим Javascript.Следующие работы: http://jsfiddle.net/EEJEh/

...