-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;
    }  
}

在第二种情况下,evtID变量将包含数字的值,所以如果你改变它,cal.vars.evtID 的值不会改变。

于 2013-09-09T21:41:34.523 回答