Как связать, развязать и переоткрыть (щелкнуть) события в JQuery
После того, как задал тот же вопрос 2 недели назад здесь, я наконец нашел решение "the". Вот почему я отвечаю на свой вопрос.;)
КАК СВЯЗАТЬСЯ, НЕОБХОДИМО И СОХРАНЯТЬ СОБЫТИЯ В СОКРАЩЕНИИ?
Ответы
Ответ 1
И это идеальное решение. (По крайней мере, для меня.)
$(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()" делает это. ПРИМЕЧАНИЕ. Важно связать событие, как вы можете видеть в строке 1! Это не работает с .click() или...!
Смотрите документы!
Вот скрипка, чтобы попробовать и поэкспериментировать с ней!
Наслаждайтесь!
Ответ 2
Более простое и короткое решение состоит в том, чтобы добавить класс к объекту, если вы хотите отвязать его, а затем удалить этот класс для повторной привязки ex;
$('#button').click( function(){
if($(this).hasClass('unbinded')) return;
//Do somthing
});
$('#toggle').click(function(){
$('#button').toggleClass('unbinded');
});
Ответ 3
Эта функция расширяет jQuery, чтобы включить оператор, который прикрепляет обработчики событий так же, как .on. Кроме того, он предотвращает присоединение более одного экземпляра данного обработчика к селектору.
Помните, что удаление и повторная привязка обработчиков событий изменяет порядок их присоединения.
(function ($) {
$.fn.reBind = function(events, handler) {
return this.off(events, handler).on(events, handler);
};
}(jQuery));