Jquery off не работает

JQuery. Off не работает

Поэтому я буду коротким: jquery .off() не отключает прослушивание, которое я установил с помощью .on .

Итак, сначала мы добавим в myspan testfunc() , нажав кнопку jquery On . После того, как мы это сделаем, если мы нажмем на промежуток, мы получим предупреждение. Затем мы нажимаем кнопку jquery off . Это должно удалить слушателя, но это не так. Даже после этого, когда мы нажимаем на myspan , testfunc все еще прикреплен.

Почему? И как я могу удалить это?

3 ответа

Ваши параметры не совпадают

Это не потому, что вы связаны с другой функцией (анонимной). А затем вы пытаетесь отменить привязку от testfunc . Чтобы привязка вашего события (не) работала , оба параметра между on и off должны совпадать .

Возможное решение

Если это единственный click прослушиватель событий в элементе, то это будет самый простой способ отсоединиться от вашей анонимной функции, вызвав:

Если вы привязываете несколько обработчиков событий к событию click для одного и того же элемента, вы также можете выделить их, предоставив пространства имен, а затем использовать правильное пространство имен в вызове off .

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

В этом простом случае замените ваш вызов off следующим:

Вам не нужно передавать функцию-обработчик в вызов off , и если вы это сделаете, она удалит только этот конкретный обработчик. Однако вы подключили не testfunc , а анонимную функцию, которая просто вызывает testfunc() . Следовательно, ваш off вызов ничего не делает.

Кроме того, вы никогда не назначали переменную testfunc .

Вы не привязываете обработчик события к testfunc , вы привязываете его к анонимной функции, и в этой функции вы просто вызываете testfunc , так что вы не можете автоматически отсоединить ее.

Или отвязать анонимную функцию, просто

Читайте также:  Духовка hansa не работает вентилятор

Или вы также можете пространство имен обработчик

Источник

jQuery: отключить событие onclick с помощью off () не работает

Вот простой пример того, что я пытаюсь сделать, у меня есть код в HTML, и моя цель — отключить три гиперссылки #validate , #organize и #export :

Когда я пытаюсь вызвать следующее, ничего не случилось. Я использую jQuery 1.11.4, и я прочитал, что методы для отключения слушателей событий изменились с 1.7. Поэтому я хотел бы знать, есть ли ошибка в моем коде JavaScript ниже или какие-то новые изменения:

5 ответов

Одним из способов было бы временно установить onclick в null, но сохранить оригинальный элемент onclick в элементе или объекте jquery (например, data ). С помощью вспомогательной функции вы можете включать или выключать элементы:

Который может быть вызван с чем-то вроде:

(также работает на объектах jquery с несколькими элементами из-за каждого)

Вам необходимо отменить привязку события click (которое было объявлено встроенным) следующим образом.

Вы можете использовать jQuery для встроенного события, чтобы вы могли off() позже. Обратите внимание, что off() удаляет слушателя. Вы не можете действительно отключить его, если не поместите некоторую логику в сам обработчик для спасения, если он не должен работать.

Событие, прикрепленное через javascript, не распознается с помощью jquery, поэтому javascript и jquery смешанные подходы не могут работать должным образом — вот почему jquery .off (‘click’); не отсоединяет событие клика

Присоедините событие клика, используя jquery:

Отключить событие клика, когда это необходимо:

Вышеупомянутый подход работает для всех стандартных браузеров, но только для IE у нас может быть еще один подход:

Попробуйте unbind вместо Off, так как событие click определено как встроенное, если click прикреплен с помощью on, то он будет работать с off.

Источник

Jquery off не работает

Удаление обработчика события.

version added: 1.7 .off( events [, selector ] [, handler(eventObject) ] )

events

Один или несколько типов событий, разделённых пробелами. Можно и с пространством имён. К пример: «click», «keydown.myPlugin», или «.myPlugin».

selector

Селектор элементов, к которым был применён метод .on().

handler(eventObject)

Функция, которая была прикреплена для обработки события или конкретное значение false.

version added: 1.7 .off( events [, selector ] )

events

Объект, поля которого представляют типы событий, а значения их обработчики.

Читайте также:  Комнатная антенна hama как настроить

selector

Селектор элементов, к которым был применён метод .on().

Метод .off() удаляет обработчики событий, назначенные методом .on(). Специфические обработчики событий могут быть удалены после указания: названий событий, пространств имён, селектор, названий обработчиков.

Если вы указали название события «click», то все события данного типа будут устранены. Если вы пишите jQuery плагин или просто работаете над большим проектом, то советуем использовать пространства имён. Все события из специфического пространства имён могут быть удалены после указания названия. К примеру, «.myPlugin».

Для удаления обработчиков, необходимо указывать параметр selector, в точности совпадающий с таким же параметром, использованным в методе .on(). Если нужно удалить с элементов все обработчики, следует в параметре selector указать значение — ‘**’.

При удалении обработчиков следует быть осторожным, если при их установке использовалась $.proxy() или подобные механизмы. Для удаления конкретных обработчиков, jQuery сравнивает специфические id функций, которые будут совпадать для функций, созданных с помощью $.proxy(). Таким образом, могут быть удалены обработчики, которые вы не собирались удалять. Для того, чтобы этого избежать, используйте пространства имен.

Теперь в метод .on(), вы можете передавать объект, ключи которого — названия событий; значения — обработчики событий.

Примеры

Пример: Добавление и удаление обработчиков событий с цветных кнопок.

Пример: Удалить все обработчики событий с параграфов:

Пример: Удалить все делегированный обработчики кликов с параграфов:

Пример: Удалить конкретный обработчик:

Пример: Убрать все обработчики события, указав пространства имён:

Источник

.on и.off не работают в jquery

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

Этот обработчик событий «appendData» делает запрос ajax и получает данные.

Я хочу отделить этот обработчик события click и прикрепить новый. Поэтому я попробовал это.

Функция вызывается, когда выполняется следующая строка, где используется.on, но потом, когда вы нажимаете на span, ни одно событие не запускается.

У вас неправильный синтаксис в функции .on() проверьте его. Итак, по-моему, вы должны изменить свой код для:

это имеет более чистый синтаксис.

Что это будет сделано, так это:

Оцените $(curntSpan) , получив объект jQuery Получите доступ .on атрибуту .on Оцените ‘click’ и toggleData(curntSpan) , получив строку и что-то еще Вызовите атрибут .on со строкой и что-то еще с предыдущего шага в качестве аргументов

Читайте также:  Фирма не работает связь

Я думаю, что вы хотите, а что-то вроде этого:

На шаге 3 это будет оценивать function() < toggleData(curntSpan) >вместо toggleData(curntSpan) — результат является функцией, которая вызывает toggleData(curntSpan) при вызове (т. toggleData(curntSpan) события click ).

Всякий раз, когда вы вызываете функцию, ее аргументы вычисляются Когда вы оцениваете вызов функции, например f(x) , вы запускаете функцию и принимаете результат Когда вы оцениваете выражение функции, например function() , результатом является просто эта функция (здесь: одна, которая не принимает аргументов и имеет пустое тело из-за того, что она закомментирована),

Такая же логика заключается в том, что вы делаете $(function() ) а не $(f(x)) чтобы выполнить некоторый код, когда страница была загружена.

Источник

.on и.off не работают в jquery

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

Этот обработчик событий «appendData» делает запрос ajax и получает данные.

Я хочу отделить этот обработчик события click и прикрепить новый. Поэтому я попробовал это.

Функция вызывается, когда выполняется следующая строка, где используется.on, но потом, когда вы нажимаете на span, ни одно событие не запускается.

У вас неправильный синтаксис в функции .on() проверьте его. Итак, по-моему, вы должны изменить свой код для:

это имеет более чистый синтаксис.

Что это будет сделано, так это:

Оцените $(curntSpan) , получив объект jQuery Получите доступ .on атрибуту .on Оцените ‘click’ и toggleData(curntSpan) , получив строку и что-то еще Вызовите атрибут .on со строкой и что-то еще с предыдущего шага в качестве аргументов

Я думаю, что вы хотите, а что-то вроде этого:

На шаге 3 это будет оценивать function() < toggleData(curntSpan) >вместо toggleData(curntSpan) — результат является функцией, которая вызывает toggleData(curntSpan) при вызове (т. toggleData(curntSpan) события click ).

Всякий раз, когда вы вызываете функцию, ее аргументы вычисляются Когда вы оцениваете вызов функции, например f(x) , вы запускаете функцию и принимаете результат Когда вы оцениваете выражение функции, например function() , результатом является просто эта функция (здесь: одна, которая не принимает аргументов и имеет пустое тело из-за того, что она закомментирована),

Такая же логика заключается в том, что вы делаете $(function() ) а не $(f(x)) чтобы выполнить некоторый код, когда страница была загружена.

Источник

Оцените статью