jQuery: Live () - Только живет один раз?
-
28-09-2019 - |
Вопрос
Я следую этой теме, чтобы отключить / включить кнопку на кнопку,Лучший способ удалить обработчик событий в jQuery?
Его идея заключается в том, что вы также можете использовать метод Live () для включения / отключения событий. Что произойдет с этим кодом, является то, что при нажатии на элемент тега, например, .load-item, он добавит класс отключен к этому элементу. Это сделает это так, чтобы селектор больше не совпадал с элементом, и событие не будет выпущено, пока «класс отключения» не будет удален.
Ниже то, с чем я вышел, и он отключает щелчок на первой кнопке,
$('.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;
});
Я проверил, что он удаляет класс отключения, но первая кнопка еще не вернена к исходному состоянию клика.
Я ничего не пропустил - или живой () на самом деле только когда-то живет? Любые лучшие решения, если живут () не тот, на кого я должен работать ??
Благодарю.
Решение
Ваша кнопка возврата должна быть живое событие, а также
$('.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/
Другие советы
Должно быть, что связано с вашим HTML-макетом или другим JavaScript. Следующие работы:http://jsfiddle.net/eejeh/