为什么我需要这个变量声明来使我的代码工作?

时间:2013-03-10 18:26:28

标签: jquery css modernizr

我有这段代码,它实际上工作正常,但我有一个虚假的行,如果没有它,它将无法工作。

它从css中获取悬停颜色,通过jquery和悬停(颜色之间)的动画,用于没有css过渡的浏览器。 (我正在使用modernizr来检测该功能)。问题是,如果我删除变量声明var ie8and9dec = quickbarcolorhover;(根本就没有其他用途,它只是触发任何使其工作的东西)那么它对IE8和IE9根本不起作用......(<因为我认为我使用的所有其他浏览器首先不需要这些代码,所以可能只是根本不工作。

有谁知道为什么会这样?如果我用console.log(quickbarcolorhover);替换声明,它也会起作用,这就是我发现它的方式。如果我可以避免它,我宁愿没有这个虚假的代码。

$(function() {
    var quickbar = $(".no-csstransitions #quick-bar a");
    quickbarcolor = quickbar.css("color");

    quickbar.hover(function () {
        if ( $(this).css("color") != quickbarcolor) {
            quickbarcolorhover = $(this).css("color");
        }
        var ie8and9dec = quickbarcolorhover; /* this dec has no purpose but code wont work without it */
        $(this).children().css("color", quickbarcolor).animate({ color: quickbarcolorhover } ,400 );
    }, function() {
        $(this).children().animate({ 'color': quickbarcolor} ,400 )
    }  
    );
});

1 个答案:

答案 0 :(得分:1)

为了防止对任何人有任何帮助,我将描述我为解决这个问题所采取的措施。

我正在使用wordpress,我发现wordpress已经包含了jQuery UI;所以我所做的是删除我最初用于动画功能的JqueryUI代码部分(有一个插件可以使用,但我选择包含JqueryUI代码)所以现在我用这个代码替换了将(在我的functions.php文件中)排入jqueryUI核心和JqueryUI效果核心,从而将JqueryUI包含在一个完全不同的(并且在wordpress术语中更好)的方法中。

然后我使用的代码也略有改变,但实际上我不认为代码是问题,因为它可能与我使用的jQueryUI代码与包含的Jquery代码不同步在wordpress。

$(function() {
    var quickbar = $(".no-csstransitions #quick-bar a");
    var quickbarcolor = quickbar.css("color");

    quickbar.hover(function () {
            if ( $(this).css("color") != quickbarcolor) quickbarcolorhover = $(this).css("color");
            $(this).find("*").css("color", quickbarcolor).animate({ color: quickbarcolorhover } , 400 );
        }, function() {
            $(this).find("*").animate({ 'color': quickbarcolor} ,400 )
        }
    );
});