2017-02-20 70 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);