JQuery 1.4.4和2.1.1的不同行为(滚动顶部)

时间:2014-05-21 03:12:37

标签: javascript jquery

不要问我为什么,但是我委托的开发人员使用JQuery 1.4.4在页面上设置了几个函数,我正在尝试将JQuery版本更新为2.1.1。这样做,我得到了一些处理滚动的JS错误,即:

$(document).ready(function(){
            var scroll_pos = 0;
            $(document).scroll(function() { 
                scroll_pos = $(this).scrollTop();
                var hrt = $('.boxBg').offset().top-200;
                if(scroll_pos > hrt) {

                    $('i.fa-heart').addClass('individual-heart-hover');
                }
                else{
                    $('i.fa-heart').removeClass('individual-heart-hover');
                }
});
});

var _rys = jQuery.noConflict();
        _rys("document").ready(function () {
            _rys(window).scroll(function () {
                if (_rys(this).scrollTop() >100) {
                    _rys('.navbar').addClass("f-nav");
                    _rys('.discoverSection').addClass("f-nav2");
                    $('.tabsection').css('display','block');
                } else {
                    _rys('.navbar').removeClass("f-nav");
                     _rys('.discoverSection').removeClass("f-nav2");
                     $('.tabsection').css('display','none');
                }
            });
        });

接收错误的行是:

$(document).ready(function(){

$('.tabsection').css('display','block');

两者都收到错误说" Uncaught TypeError:undefined不是函数"。

奇怪的是,这些都可以与JQuery 1.4.4完美配合。

1 个答案:

答案 0 :(得分:0)

这一行很可疑:

var _rys = jQuery.noConflict();

该代码删除 $的定义,因此任何使用$的后续代码都将失败。

如果您需要同时加载两个不同版本的jQuery,或者如果您使用另一个定义jQuery.noConflict()的库来表示其他内容,则应该只使用$。 (.noConflict()实际上恢复了$之前的任何定义,但是从您收到的错误看来,之前没有$。)

假设您没有处理其中一种特殊情况,只需完全删除noConflict行,然后将_rys的每个实例更改为$