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