У меня есть input type="image"
. Это действует как примечания к ячейке в Microsoft Excel. Если кто-то вводит число в текстовое поле, с которым это input-image
связано, я устанавливаю обработчик событий для input-image
. Затем, когда пользователь нажимает кнопку image
, он получает небольшое всплывающее окно, чтобы добавить некоторые примечания к данным.
Моя проблема в том, что когда пользователь вводит ноль в текстовое поле, мне нужно отключить input-image
обработчик событий. Я пробовал следующее, но безрезультатно.
$('#myimage').click(function { return false; });
источник
unbind()
работает ли? Я добавил это, и оба события все еще стреляют.$('#myimage').off('click').on('click',function(){...})
.unbind()
помогло мне в ситуации, когда я включал несколько флажков, но изменил размер, я.click()
неоднократно повторно добавлял обработчик, вызывая зависание приложения.Это было недоступно, когда на этот вопрос был дан ответ, но вы также можете использовать метод live () для включения / выключения событий.
Что произойдет с этим кодом, так это то, что когда вы нажмете #mydisablebutton, он добавит отключенный класс к элементу #myimage. Это сделает так, что селектор больше не будет соответствовать элементу, и событие не будет запущено до тех пор, пока класс «disabled» не будет удален, что снова сделает селектор .live () действительным.
Это имеет и другие преимущества, добавляя стилизацию на основе этого класса.
источник
live()
, никогда не задумывался об использовании этого способа раньше ... Помимо удобства программирования, это быстрее или предлагает какие-то другие преимущества использования bind / unbind?Если вы хотите ответить на событие только один раз , следующий синтаксис должен быть действительно полезным:
Используя arguments.callee , мы можем гарантировать, что один конкретный обработчик анонимной функции будет удален, и, таким образом, иметь один обработчик времени для данного события. Надеюсь, что это помогает другим.
источник
Это можно сделать с помощью функции unbind.
Вы можете добавить несколько обработчиков событий к одному и тому же объекту и событию в jquery. Это означает, что добавление нового не заменяет старые.
Существует несколько стратегий для изменения обработчиков событий, таких как пространства имен событий. Есть несколько страниц об этом в онлайн-документах.
Посмотрите на этот вопрос (вот как я узнал о unbind). В ответах есть полезное описание этих стратегий.
Как читать связанные функции обратного вызова в jquery
источник
может быть, метод отмены привязки будет работать для вас
источник
Я должен был установить событие равным нулю, используя опору и атрибут. Я не мог сделать это с одним или другим. Я также не мог заставить .unbind работать. Я работаю над элементом TD.
источник
$("#elementId").click(function(){//Event execution code goes here});
этого, чтобы его вообще не было на html-странице. Чтобы понять, что нам на самом деле нужно использовать.unbind()
, или предпочитаемое.off()
unbind
иoff
это не решало проблему. Большое спасибо!Если событие прикреплено таким образом , и цель должна быть неприсоединена:
источник
Вы можете добавлять
onclick
обработчик как встроенную разметку:Если это так, JQuery
.off()
или.unbind()
не будет работать. Вам также необходимо добавить оригинальный обработчик событий в jquery:Тогда jquery имеет ссылку на обработчик события и может удалить его:
VoidKing упоминает это немного более косвенно в комментарии выше.
источник
Обновлено на 2014
Используя последнюю версию jQuery, вы теперь можете отменить привязку всех событий в пространстве имен, просто выполнив
$( "#foo" ).off( ".myNamespace" );
источник
Лучший способ удалить встроенное событие onclick -
$(element).prop('onclick', null);
источник
Для
remove
ВСЕХevent-handlers
это то, что работало для меня:Удалить все обработчики событий - значит иметь простой объект
HTML structure
безevent handlers
привязки к немуelement
и егоchild nodes
. Для этогоjQuery's clone()
помогло.С этим у нас будет
clone
местоoriginal
безevent-handlers
на этом.Удачи...
источник
Спасибо за информацию. очень полезно, я использовал его для блокировки взаимодействия страницы в режиме редактирования другим пользователем. Я использовал его в сочетании с ajaxComplete. Не обязательно такое же поведение, но несколько похожее.
источник
В случае, если
.on()
метод ранее использовался с определенным селектором, как в следующем примере:Оба
unbind()
и.off()
методы не являются собираются работать.Однако метод .undelegate () может быть использован для полного удаления обработчика из события для всех элементов, которые соответствуют текущему селектору:
источник
Если вы используете
$(document).on()
для добавления слушателя к динамически созданному элементу, вам, возможно, придется использовать следующее, чтобы удалить его:источник
Это также хорошо работает .Simple и easy.see http://jsfiddle.net/uZc8w/570/
источник
если вы установите
onclick
черезhtml
вам нужноremoveAttr ($(this).removeAttr('onclick'))
если вы установите его с помощью jquery (как после первого клика в моих примерах выше), то вам нужно
unbind($(this).unbind('click'))
источник
Я знаю, что это поздно, но почему бы не использовать обычный JS для удаления события?
или, если вы используете именованную функцию в качестве обработчика события:
источник
Все описанные подходы не сработали для меня, потому что я добавлял событие click
on()
в документ, где элемент был создан во время выполнения:Мой обходной путь:
Поскольку я не мог отменить привязку к классу ".button", я просто назначил другой класс кнопке, которая имела те же стили CSS. При этом обработчик live / on-event окончательно проигнорировал щелчок:
Надеюсь, это поможет.
источник
Надеюсь, мой код ниже все объясняет. HTML:
источник
})(jQuery);
входите в IIFE, когда к нему уже можно получить доступ по всему миру?Просто удалите это из кнопки:
источник