[英]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.