繁体   English   中英

使用jQuery的JavaScript中的功能范围

[英]function scope in javascript with jquery

$.plugin = {

    loadedcss   : [],

    add: function(params) { 
        $.each(params["css"], function(key,value) { 
            // this.loadedcss error undefined
            this.loadedcss.push(value);
        });
    },

    end: function(){
        //console.log(this.loadedcss);
    }
};

如您所见,即时通讯正在尝试将我的新CSS参数推入 loadedcss变量。 它说错误未定义 this.loadedcss也许我错过了一些东西

$.plugin.add({
    css: ['framework.css','csstest.css']
}); 

$.plugin.add({
    css: ['framework.css','csstest.css']
}); 

    $.plugin.end();

我们如何将我的params['css']推送到this.loadedcss

你可以试试,

$.plugin = (function(){
var methods = {
   loadedcss   : [],

    add: function(params) { 
       // IF IN ARRAY NOT LOADED THEN PUSH CSS
      if ($.inArray(params['css'],this.loadedcss) == -1) {
         // error undefined this.loadedcss
         methods.loadedcss.push(params['css']);
       };
     },
     ...
   };

return methods;
})();

它将允许您使用内部变量以及副作用。

或者,

add: function(params) { 
    var me = this;
    $.each(params["js"], function(key,value) { 
        // this.loadedcss error undefined
        me.loadedcss.push(value);
    });
}

也会起作用

this参数别名为其他名称(在下面的示例中为self ),然后在回调函数中使用该别名。

add: function(params) { 
    var self = this;
    $.each(params["css"], function(key,value) { 
        self.loadedcss.push(value);
    });
},

您不能在回调中使用this ,因为$.each()会将其设置为当前数组元素的值。

$.plugin只是一个对象。 这应该是一个函数,以创建它的一个新的实例,那么你可以使用this在它的方法。 你现在可以试试看

$.plugin = {

    loadedcss   : [],

    add: function(params) { 
        $.each(params["js"], function(key,value) { 
          // this.loadedcss error undefined
          $.plugin.loadedcss.push(value);
        });
    },

    end: function(){
        //console.log(this.loadedcss);
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM