-1

varsオブジェクト内にある変数evtIDをcreateEventメソッド内のクリック イベントに渡します。cal.vars.evtIDを使用して参照する必要があります。これを別の変数を参照して入力量を短くするために渡す方法があるかどうか疑問に思っていましたか?

基本的に、vars オブジェクトで作成するすべての変数に cal.vars.variable 名を入力する必要はありません。

var cal = {    

    vars: {
        evtID: 0 // here
    },

    createEvent: function(){

        $('.square').on('click',function(){     
            var array = [
                '<div class="event" id="event' + cal.vars.evtID + '">', // and here
                    '<div class="close"></div>',
                '</div>'
            ];

            $('.event-container').append(array.join(""));
        cal.vars.id++;

        });
    },

    init: function(){
        this.createEvent();
    }
}

window.onload = function(){
    cal.init();
}
4

1 に答える 1

0

短くすることはできません。

コードthisでは、クリック ハンドラーで再割り当てされますが、それ以外の場合は、現在のオブジェクトにアクセスするために使用できます。

var cal = {    
    vars: {
        evtID: 0 // here
    },
    createEvent: function(){
        this.vars.evtID;
    }
}

ハンドラー内で使用したい場合は、それへの参照を保存する必要があります。

createEvent: function(){
    var that = this;
    $('.square').on('click',function(){     
         that.vars.evtID;
    }  
}

または、参照を直接保存しますvars

createEvent: function(){
    var vars = this.vars;
    var evtID = vars.evtID;
    $('.square').on('click',function(){     
         vars.evtID;
         evtID;
    }  
}

2 番目のケースでは、evtID変数には数値の値が含まれるため、変数を変更しても cal.vars.evtID の値は変更されません。

于 2013-09-09T21:41:34.523 に答える