2016-09-28 110 views
10

在單個頁面中,我只包含jQuery 3.1.1和stellar.js的視差滾動效果,但是當我嘗試tu時使用它作爲$(window).stellar();我在控制檯中出現此錯誤:使用jquery使用stellar.js的未捕獲類型錯誤3.1.1

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>

+0

可以複製誤差與小提琴什麼的? – Adjit

+0

完成後,我添加了一個片段,但我不相信它有幫助。 – Vixed

+0

是的,我的意思是它看起來像是最新版本的jQuery的某種兼容性問題。它工作在任何2.0版本 – Adjit

回答

5

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加載事件被去除。你可以改變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/和工作我剛纔說了,不再被拋出一個錯誤。

P.S:我不確切知道這個庫的用途。

在那個js小提琴中,我剛從當前GitHub項目中複製了未縮小的腳本:https://github.com/markdalgleish/stellar.js/blob/master/src/jquery.stellar.js 並修改了加載事件。

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

-1

您是否安裝jQuery UI 1.12.0-rc.2也?

乾杯

+0

我沒有使用jQuery UI。 – Vixed