IE8中的jQuery undefined变量

时间:2012-07-04 19:55:44

标签: javascript jquery undefined

我为滑块创建了一个jQuery迷你脚本。它在Firefox,Chrome,IE9中完美运行,但当我将鼠标悬停在IE7,IE8中时。它显示警告错误(Undefined current_hover_item)。

$('.nav-item').hover(function(){
        var current_hover_item = $(this).children().attr('rel');
        $('.show-item').hide();
        $(current_hover_item).fadeIn(1000);
        $(this).animate({"width": "+=10px", opacity: 0.6}, 500, function(){
             $(this).animate({"width": "-=10px", opacity: 1}, 500);
        });
}, function(){
        $(current_hover_item).fadeOut(1000);
        return false;
});

我尝试删除(var)关键字,但是当我悬停时,它不会显示所有内容。 请帮我。感谢。

2 个答案:

答案 0 :(得分:2)

current_hover_item在第二个函数中未定义,因为第一个函数中的定义位于closure

您需要在两个函数中声明current_hover_item。或者,因为您只在每个函数中使用一次变量,所以完全删除它,如下所示:

$('.nav-item').hover(function(){
        $('.show-item').hide();
        $($(this).children().attr('rel')).fadeIn(1000);
        $(this).animate({"width": "+=10px", opacity: 0.6}, 500, function(){
             $(this).animate({"width": "-=10px", opacity: 1}, 500);
        });
}, function(){
        $($(this).children().attr('rel')).fadeOut(1000);
        return false;
});

或者最好重构您的代码。

答案 1 :(得分:0)

我今天早些时候遇到了这个问题。我通过在任何jquery函数(包括.ready())之外声明变量来修复它,然后将其设置在您需要它的位置(您当前声明它的位置)。