2

For some reason It appears all the jQuery on my site has stopped working. There is a jQuery slider and drop down menus both of which has stopped working. I have not changed any of the code. It's a word press site. My jQuery is inactive, it appears to be disabled. All the functionality of the jQuery is dead. However I placed a simple function in the header of the website to check if jQuery was loading and it worked. So I think it might just be the jQuery in my website that is buggy. But it has worked fone for over a year and it appears that its just stopped working now without reason. Below is a function of the superfish drop down menu that was giving an error: "Uncaught TypeError: Cannot read property 'msie' of undefined $(this).addClass(menuClasses.join(' ')); }); };" according to the chrome console. Can anyone see whats happening?

;(function($){
    $.fn.superfish = function(op){

        var sf = $.fn.superfish,
            c = sf.c,
            $arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
            over = function(){
                var $$ = $(this), menu = getMenu($$);
                clearTimeout(menu.sfTimer);
                $$.showSuperfishUl().siblings().hideSuperfishUl();
            },
            out = function(){
                var $$ = $(this), menu = getMenu($$), o = sf.op;
                clearTimeout(menu.sfTimer);
                menu.sfTimer=setTimeout(function(){
                    o.retainPath=($.inArray($$[0],o.$path)>-1);
                    $$.hideSuperfishUl();
                    if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
                },o.delay); 
            },
            getMenu = function($menu){
                var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
                sf.op = sf.o[menu.serial];
                return menu;
            },
            addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };

        return this.each(function() {
            var s = this.serial = sf.o.length;
            var o = $.extend({},sf.defaults,op);
            o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
                $(this).addClass([o.hoverClass,c.bcClass].join(' '))
                    .filter('li:has(ul)').removeClass(o.pathClass);
            });
            sf.o[s] = sf.op = o;

            $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
                if (o.autoArrows) addArrow( $('>a:first-child',this) );
            })
            .not('.'+c.bcClass)
                .hideSuperfishUl();

            var $a = $('a',this);
            $a.each(function(i){
                var $li = $a.eq(i).parents('li');
                $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
            });
            o.onInit.call(this);

        }).each(function() {
            menuClasses = [c.menuClass];
            if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
Uncaught TypeError: Cannot read property 'msie' of undefined
            $(this).addClass(menuClasses.join(' '));
        });
    };
4

1 に答える 1

9

GoogleやjQueryホスティングなどのCDNからjQueryの最新バージョンを読み込んでいる可能性があります。最近更新されましたが、少なくとも1つの非推奨の機能(つまり、$.browserメソッド)を使用しているようです。

リリースノートから:

jQuery.browser()が削除されました

jQuery.browser()メソッドはjQuery 1.3以降非推奨になり、1.9で削除されました。必要に応じて、jQueryMigrateプラグインの一部として利用できます。Modernizrなどのライブラリで機能検出を使用することをお勧めします。

これは、エラーメッセージによって確認されます。

Uncaught TypeError: Cannot read property 'msie' of undefined
于 2013-01-17T12:10:48.630 に答える