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

jQuery.live () не работает внутри плагина

Я пишу плагин, и мне нужно привязать клик в реальном времени. Плагин отлично работает, когда я выполняю обычную привязку кликов, но не живую привязку.

Я довел плагин до основ:

Когда я вызываю функцию плагина по ссылке, на мою консоль выводится только click .

Что мне нужно сделать, чтобы live() работал? Спасибо.

5 ответов

Поразмыслив над этим, я понял, что нет смысла вызывать live для существующего элемента DOM, потому что он уже находится в DOM.

Уловка заключается в использовании live при вызове плагина:

Я думаю, это не лучшая точка зрения. Теперь предположим, что ваш плагин представляет собой своего рода лайтбокс, и он пытается привязать элементы внутри DOM. Обычно, когда дом готов, вы делаете что-то вроде

Что делать, если вы добавляете на свою страницу некоторые ссылки через jsor ajax? Я не думаю, что перепривязка с использованием вашего

Будет правильным путем! Он будет работать, но, честно говоря, я не думаю, что это будет «лучшая практика». Настоящая проблема заключается в том, что с jQuery 1.4.2 делегирование живого события ожидает строки (‘a.test’), а не объекта (this). Может быть, это ошибка jQuery 1.4.2?

Я считаю, что это работает (jQuery 1.5.2):

Есть ли конкретная причина, по которой у вас есть 2 события click , привязанных к одному объекту? Вторая привязка перезапишет привязку live , поэтому live никогда не сработает.

Это работает без обходных путей вне плагина:

Источник

Форум

Справочник

Страница 1 из 2 1 2 >
Опции темы Искать в теме
Читайте также:  Google оповещения как настроить

Не работает live click, не понимаю в че дело.

$(«#mydiv»).on(«click», «.myclass», function() <
alert(‘усправление списком’);
>);

А как сделать без привязки к #mydiv ?

Просто если на форме появляется новый элемент, то чтобы к нему событие автоматом привязывалось.

В тестовом файле работает, а в рабоче не работает.

Тестовый код (работает)
$(«.div_list»).on(«click», «.list», function() <
alert(‘управление списком’);
>);

рабочий код (не работает)
$(«.mydiv»).on(«click», «.myclass», function() <
alert(‘управление списком’);
>);

почему не работает рабочий код никак не могу понять

Сообщение от SKLNSK Просто если на форме появляется новый элемент, то чтобы к нему событие автоматом привязывалось.

так на форму ставьте или создали затем привязали

и при нажатии этик кнопок + — E и C ничего не происходит .

а код вот такой для привязки событий
$(«.div_list»).on(«click», «.list», function() <
alert(‘усправление списком’);
>);

на приведенном скрине видно что есть div с классом div_list , а в нем кнопки с классом list и при нажатии на кнопки ничего не происходит.

$(«.div_list»).on(«click», «.list», function() <
alert(‘усправление списком’);
>);

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

Источник

jQuery .live () не работает с событием щелчка

У меня есть календарь ajax, который меняет месяц при нажатии некоторых стрелок. По какой-то причине событие click не работает в методе live (). Раньше работало, а теперь почему-то нет.

Если я заменю live () на click (), он будет работать, но мне нужен метод live ().

Предположения

  • Я использую последнюю версию jQuery.
  • Ошибки JS не выдаются.
  • HTML действителен
  • Селектор a.x-btn найден (длина = 2)
  • console.log («Дошло так далеко!») запускается правильно.
  • console.log (‘Sidebar Cal Clicked’) не срабатывает вообще.
  • Работает в среде WordPress.
  • DOCTYPE установлен для HTML5

ОТВЕТ

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

Читайте также:  Что делать если сломался термостат

Я использую этот код, чтобы страница не перескакивала при нажатии на бесполезные ссылки. На этом заканчивается распространение всех тегов ‘A’, которые имеют href = «#» при нажатии. Я удалил и все работает нормально.

Кроме того, несмотря на то, что говорится в документации jQuery, при использовании jQuery 1.5.2 метод live () работает после обхода DOM. Я все равно изменил его, просто чтобы соответствовать документации. Но это работает! Спасибо за помощь, ребята!

Источник

Как заставить метод on() вести себя как метод live()?

В новых версиях jQuery не поддерживается метод live() , основной особенностью которого является то, что он «заставляет» срабатывать обработчик для элементов DOM структуры, которые были добавлены или изменены посредством JavaScript.

В документации пишут следующее:

Метод on() введен в jQuery-1.7, чтобы объединить три метода библиотеки, устанавливающие обработчики событий на элементы страницы: .bind(), .delegate(), .live(). Сами эти методы считаются теперь устаревшими, хотя еще поддерживаться. Установить обработчик, срабатывающий только один раз, по прежнему можно только с помощью отдельного метода .one().

. submit, keydown, keypress, keyup, error. Каждый из этих типов имеет одноименный метод, являющейся краткой формой метода on() . К примеру, использование click(handler) равнозначно on(«click», handler).

Т.е. получается, что если элемент DOM изменился, то воздействовать на них после этого никак нельзя?

Вот конкретный пример, в старых версиях jQuery этот код прекрасно работал:

Т.е. по клику на checkbox отсылается один POST запрос, и у элемента меняется класс, при повторном клике отсылается другой POST запрос, и класс элемента становится прежний. Те же 2 функции, в которых live() заменён на on() , не работают, точнее первая срабатывает, а вторая — нет.

Как можно заставить работать on() как live() , или какой метод теперь применять в новом jQuery, если он не поддерживает live() ?

Читайте также:  Зайчик alilo сломалась кнопка

Источник

Функция jQuery live внезапно перестает работать

я использовал jQuery live() функция для того чтобы обнаружить когда потребитель отжимал некоторые специальные клавиши (стрелки, etc.):

он работал нормально в течение нескольких месяцев, когда внезапно вчера он перестал работать, предотвращая выполнение каждой строки кода JS ниже него. Я попытался заменить его на

12 ответов

Я предполагаю, что вы обновили до последней версии jQuery? live() устарел с jQ1.7, и теперь удаляется с 1.9.

вместо этого, вы должны использовать on() с параметром делегата:

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

С помощью jQuery .live устарел. Хотя не совсем то же самое, используйте.на() Для вашего примера это будет выглядеть так:

.live() был удален после jQuery 1.9.

вы должны использовать .on отныне.

.live() был удален в последней версии jQuery 1.9.

можно использовать в jQuery перенести плагин вместо этого или измените код для использования .on .

.live был удален в jQuery 1.9. Если вы вызываете последнюю версию jQuery, она сломается.

измените код для использования .on

live фактически был удален на jq 1.9, а не просто устарел! вы можете использовать плагины для совместимости или обновить код до on

по состоянию на jQuery 1.7, the .метод live () устарел. Использовать.on () для присоединения обработчиков событий. Пользователи более старых версий jQuery использовать .делегат () в предпочтении .жить.)(

прочитайте это для получения дополнительной информации о live

.live() устарел в jq 1.9, поэтому вы можете попробовать это

Источник

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