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

".по()" это делает. Примечание: важно привязать событие, как вы можете видеть на первой строке! Он не работает .нажмите () или ...!

посмотреть docs!

вот скрипка попробовать и поэкспериментировать с ним!

наслаждайтесь!


более простое и короткое решение-добавить класс к объекту, если вы хотите его развязать, а затем удалить этот класс для повторной привязки ex;

$('#button').click( function(){
   if($(this).hasClass('unbinded')) return;
   //Do somthing
 });

$('#toggle').click(function(){
    $('#button').toggleClass('unbinded');
 });

эта функция расширяет jQuery, чтобы включить оператор, который присоединяет обработчики событий так же, как .на. Кроме того, он предотвращает подключение к селектору(селекторам) более одного экземпляра данного обработчика.

имейте в виду, что удаление и повторное присоединение обработчиков событий изменяет порядок их присоединения.

(function ($) {
    $.fn.reBind = function(events, handler) {
        return this.off(events, handler).on(events, handler);
    };
}(jQuery));