0

現在javascript(jquery)を勉強中です。シンプルなアコーディオン メニューを作成するプラグインを作成していますが、動的変数の作成中に問題が発生しました。

(function($){

    jQuery.accordify = function(settings){

        $defaults = {
            section : null,
            content : null,
            animation: 'slide',
            speed: 500
        }

        var defaults = $defaults;
        var settings = $.extend(defaults, settings);

        $animation = {
            slide : {in : 'slideDown('+settings.speed+')', out: 'slideUp('+settings.speed+')'},
            fade : {in: 'fadeIn('+settings.speed+')', out: 'fadeOut('+settings.speed+')'}
        }

        var animation = $animation.+settings.animation; // equvilent to 'animation.slide'

        alert(animation.in); // should return 'slideUp(500)'

    }

})(jQuery);

変数アニメーションは、設定/デフォルト配列で定義されているanimation.slideに相当するものを参照しようとしています.animation.slide.inの代わりにanimation.in呼び出すことできるようにするにはどうすればよいですか?.

4

2 に答える 2

0

構文エラー、に注意してください。およびプラス。+

  $animation.+settings

また、「in」は予約語です。すぐに変更することをお勧めし ますhttps://developer.mozilla.org/en/JavaScript/Reference/Reserved_Words

于 2012-07-08T14:00:45.833 に答える
0

私は直面していた問題を解決することができました。リテラルオブジェクトを変数に変更し、サブオブジェクトをそのように呼び出しました...animation[settings.animation]これは機能します。

于 2012-07-08T14:36:54.020 に答える