0

私はそのようなものを持っています:

$(function(){
    init = {
        actions :{
            settings    : [settings_title(), settings_time(), settings_category(), settings_design(), settings_registration()],         
            timer       : [timer()]             
        }
    };

しかし、ページが読み込まれたときにこれらすべての関数がすぐに実行されるのは望ましくありません。

$('.save').click(function(){
    init.actions.settings[1];
});

または私は何かを逃した

4

1 に答える 1

7

私はあなたがこれを探しているかもしれないと思います:

$(function(){
    init = {
        actions :{
            settings    : [settings_title, settings_time, settings_category, settings_design, settings_registration],         
            timer       : [timer]             
        }
    };
// ...

()関数名の後にはありません。つまり、関数オブジェクトを参照しているだけで (参照を配列に入れています)、関数オブジェクトを呼び出してその戻り値を配列に入れているわけではありません。

その後:

$('.save').click(function(){
    init.actions.settings[1]();
    // Note ----------------^^
});

...インデックス 1 の配列に格納した関数を呼び出します。


補足: 表示されていない宣言がない限り、 The Horror of Implicit Globals のinit餌食になります。

于 2013-06-05T12:05:19.493 に答える