使用带有jquery 3.1.1

时间:2016-09-28 15:50:13

标签: javascript jquery html parallax stellar.js

在单个页面中,我只包含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>

3 个答案:

答案 0 :(得分:6)

由于这段代码,

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);
                });

这是一个&#34;工作&#34;小提琴: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 :(得分:1)

如果您不想更改实际插件中的代码,您也可以将jQuery migrate添加到项目中,我在以下设置中遇到了同样的问题......

jQuery v3.3.1

Stellar.js v0.6.2

将jquery-migrate / 3.0.1添加到项目中解决了问题。

答案 2 :(得分:-1)

您是否也安装了jQuery UI 1.12.0-rc.2

干杯