2017-02-20 25 views
0

Мне недавно пришлось обновить версию JQuery, один из моих плагинов прекратил работать в результате. Я использовал плагин migrate, я изменил все bind() на on(), но безрезультатно.bind() в jquery 3.x

Я использую JQuery Параллакс 1.1.3 Яном Ланн (found here)

Внутри вызываемой функции есть линия

$window.bind('scroll', update).resize(update); 

где обновление является функцией. Я изменил это

$window.on('scroll', update()).resize(update()); 

но update() не вызывается. $window.scroll() также не помогает.

Что я могу сделать, чтобы восстановить функциональность моих старых функций?

+1

Пожалуйста, создайте [mcve] - мы не знаем, что '$ window' или 'update' есть. Это должно быть '$ (window)', но мы догадываемся. Добавление(), конечно, не помогает, если новая функция обновления не возвращает функцию – mplungjan

+4

Сначала добавление '()' после имени функции вызовет ее немедленно. Попробуйте '$ window.on ('scroll', update) .resize (update)'. Моя догадка - функция 'update' не возвращает ничего, поэтому функция не связана с событием – Rajesh

+4

Почему вы изменили' update' на 'update()'? Таким образом, эта функция вызывается непосредственно во время вызова 'on', а jQuery пытается связать события' scroll' и 'resize' с результатом ** выполнения функции обновления. Попробуйте '$ window.on (" scroll resize ", update);'. Он должен работать. –

ответ

0

Вот пример с $ window.scroll()

https://jsfiddle.net/sn7jr0ba/

function alertTemp(){ 
console.log("scrolled"); 
} 
$(window).scroll(alertTemp); 
+0

Не предупреждайте о событии, которое запускается так часто. Вместо этого console.log его – mplungjan

+0

обновил код. спасибо –

0

Вы находитесь на правильном направлении для изменения всех .bind() в .on() для новейших JQuery, но вы не должны использовать скобки во втором параметре. Изменить это:

$window.on('scroll', update()).resize(update()); 

к этому:

$window.on('scroll', update).resize(update); 

Это должно работать. :)

+0

Спасибо за ваш комментарий. Событие также не работает без скобки, это был мой первый т гу. Я могу включить источник плагина, если вы хотите, уже есть ссылка.Обновление до версии JQuery версии 2 не дает мне никакой ошибки, мне просто интересно, как ват изменился в версии 3. –

+0

Добро пожаловать! Обработка событий с помощью on уже корректна, поэтому, если это все еще не работает, возможно, проблема заключается в переменной '$ window', которая указывает на элемент (я предполагаю, что он ссылается на элемент' $ (window) '), или что внутри' update() '. –

+0

@ArneClicteur Как насчет console.log? Есть ли там сообщение об ошибке? Может быть, есть какая-то подсказка. –

0

да, удалить (),

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

$window.on('scroll resize', update); 

 Смежные вопросы

  • Нет связанных вопросов^_^