2017-02-20 67 views
0

我最近不得不升级我的JQuery版本,结果我的一个插件停止工作。我使用了迁移插件,我将所有bind()更改为on(),但无济于事。jquery 3.x中的bind()

我使用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'是。它应该是'$(窗口)',但我们猜测。除非新的更新函数返回函数,否则添加()肯定不会起作用 – mplungjan

+4

在函数名后面加上'()'会立即调用它。试试'$ window.on('scroll',update).resize(update)'。我的猜测是'update'函数没有返回任何东西,所以没有函数被附加到事件 – Rajesh

+4

为什么你将'update'更改为'update()'?这样,这个函数在'on'调用时立即被调用,而jQuery试图将'scroll'和'resize'事件绑定到''update''函数执行**的**结果。试试'$ 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

感谢您的评论。括号,这是我第一次RY。如果你愿意,我可以包含插件的来源,已经有一个链接。升级到JQuery版本2并不会导致错误,我只是想知道在版本3中wat已经改变了。 –

+0

不客气!用on处理事件已经是正确的了,所以如果这仍然不起作用,问题可能出现在$ window变量中,它指向元素(我假设它指向'$(window)'元素),或者' update()函数。 –

+0

@ArneClicteur console.log怎么样?那里有任何错误消息?也许有一些线索。 –

0

是,除去()

您也可以组事件,以使其更具可读性

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