2

このコードがあり、実際には正常に動作しますが、そこに偽の行があり、何らかの理由でそれなしでは機能しません。

jquery を介して css からホバーの色を取得し、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 )
    }  
    );
});
4

1 に答える 1

1

他の人の助けになる場合に備えて、これを修正するために何をしたかを説明します。

私はワードプレスで作業していましたが、ワードプレスにはすでに jQuery UI が含まれていることがわかりました。だから私がしたことは、もともとアニメーション機能に使用していた JqueryUI コードの一部を削除することでした (どちらかを使用できるプラグインがありますが、JqueryUI コードを含めることを選択しました)。 jqueryUIコアとJqueryUIエフェクトコアの両方に(私のfunctions.phpファイルで)エンキューし、JqueryUIを完全に異なる(ワードプレス用語でより良い)方法で含めます。

その後、使用したコードも少し変更されましたが、実際には、使用していた jQueryUI コードが wordpress に含まれる Jquery コードと同期していなかった可能性があるため、コードに問題はないと思います。

$(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 )
        }
    );
});
于 2013-03-11T15:05:04.103 に答える