Как связывать, откреплять и перепривязывать (кликать) события в JQuery
Задав здесь тот же вопрос 2 недели назад, я, наконец, нашел "то самое" решение. Вот почему я отвечаю на свой вопрос.;)
КАК СВЯЗАТЬ, РАЗБАВИТЬ И ПОВТОРЯТЬ СОБЫТИЯ В JQUERY?
3 ответа
И это идеальное решение. (По крайней мере для меня.)
$(document).on('click', 'a#button', function(){
$(this).after('<span> hello</span>');
$('span').fadeOut(1000);
});
$('a#toggle').toggle(
function(){
$(this).text('rebind');
$('a#button').on('click.disabled', false);
},
function(){
$(this).text('unbind');
$('a#button').off('click.disabled');
}
);
".on ()" делает это. ПРИМЕЧАНИЕ. Важно связать событие так, как вы видите в первой строке! Он не работает с.click() или…!
Смотрите документы!
Вот скрипка, чтобы попробовать и поэкспериментировать с этим!
Наслаждайтесь!
Более простое и короткое решение - добавить класс к объекту, если вы хотите отсоединить его, а затем удалить этот класс для повторного связывания ex;
$('#button').click( function(){
if($(this).hasClass('unbinded')) return;
//Do somthing
});
$('#toggle').click(function(){
$('#button').toggleClass('unbinded');
});
Эта функция расширяет jQuery для включения оператора, который присоединяет обработчики событий так же, как.on. Кроме того, он предотвращает присоединение более чем одного экземпляра данного обработчика к селектору (ам).
Имейте в виду, что удаление и повторное присоединение обработчиков событий изменяет порядок их подключения.
(function ($) {
$.fn.reBind = function(events, handler) {
return this.off(events, handler).on(events, handler);
};
}(jQuery));