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