Как связывать, откреплять и перепривязывать (кликать) события в 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));
Другие вопросы по тегам