簡體   English   中英

使用帶有jquery 3.1.1的stellar.js的未捕獲的TypeError

[英]Uncaught TypeError using stellar.js with jquery 3.1.1

在單個頁面中,我只包含jQuery 3.1.1和stellar.js用於視差滾動效果,但是當我嘗試使用它作為$(window).stellar(); 我在控制台中收到此錯誤:

Uncaught TypeError: f.getClientRects is not a function (jquery-3.1.1.min.js:4)

我嘗試使用migrate插件,如許多答案中所建議的那樣,但並沒有解決我的問題。

該片段只是為了向您顯示錯誤。

 $(function(){ $('.main').stellar(); }); 
 <div class="main"> <div class="slide"></div> <div class="slide"></div> <div class="slide"></div> </div> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/stellar.js/0.6.2/jquery.stellar.min.js"></script> 

由於這段代碼,stellar.js失敗了:

$(window).load(function() {
                var oldLeft = self._getScrollLeft(),
                    oldTop = self._getScrollTop();

                self._setScrollLeft(oldLeft + 1);
                self._setScrollTop(oldTop + 1);

                self._setScrollLeft(oldLeft);
                self._setScrollTop(oldTop);
            });

在jquery 3.0中,load事件被刪除。 你可以改為on('load', function{});

 $(window).on('load', function() {
                    var oldLeft = self._getScrollLeft(),
                        oldTop = self._getScrollTop();

                    self._setScrollLeft(oldLeft + 1);
                    self._setScrollTop(oldTop + 1);

                    self._setScrollLeft(oldLeft);
                    self._setScrollTop(oldTop);
                });

這是一個“工作”的小提琴: https//jsfiddle.net/y19x160g/1/並通過工作我只是說,不再拋出錯誤。

PS:我不確切知道這個庫的用途。

在那個js小提琴我只是從當前的GitHub項目中復制了未縮小的腳本: https//github.com/markdalgleish/stellar.js/blob/master/src/jquery.stellar.js並修改了load事件。

其他參考: https//api.jquery.com/load-event/ - 請參閱棄用

如果你不想改變實際插件中的代碼,你也可以只將jQuery migrate添加到項目中,我在下面的設置中遇到了同樣的問題...

jQuery v3.3.1

Stellar.js v0.6.2

將jquery-migrate / 3.0.1添加到項目修復了該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM