使用jquery的javascript中的函数范围
如您所见,im试图将我的新css参数推送到使用jquery的javascript中的函数范围,javascript,jquery,Javascript,Jquery,如您所见,im试图将我的新css参数推送到loadedcss变量。它说错误未定义这个。loadedcss也许我错过了一些东西 $.plugin = { loadedcss : [], add: function(params) { $.each(params["css"], function(key,value) { // this.loadedcss error undefined this.loade
loadedcss
变量。它说错误未定义这个。loadedcss也许我错过了一些东西
$.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
。你现在可以试试这个
$.plugin.add({
css: ['framework.css','csstest.css']
});
$.plugin.add({
css: ['framework.css','csstest.css']
});
$.plugin.end();
你可以试试
$.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);
}
};
它将允许您使用内部变量以及副作用
或者
$.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;
})();
还将使用将此
参数别名为其他参数(下例中的self
),然后在回调函数中使用该别名
add: function(params) {
var me = this;
$.each(params["js"], function(key,value) {
// this.loadedcss error undefined
me.loadedcss.push(value);
});
}
您不能在回调中使用此
,因为$。each()
将其设置为当前数组元素的值。它对我有效。抱歉,我错过了真正的代码。顺便说一句,您的代码中混入了css
和js
。JSON是一种符号,而不是数据类型。@Alnitak-是的,它不是数据类型。@user397916-对于您编辑的代码,您仍然不能使用它,因为它将指向当前值params[“js”]集合或映射。检查我编辑过的答案。@ShankarSangoli我的观点是Javascript中没有“json对象”这样的东西。他在这里有一个对象文字,它恰巧看起来像JSON。@Alnitak-我完全同意你的看法:)最后返回方法。。我在书里什么地方都没找到,安德鲁,有什么好的联系吗?thanks@Andrew我认为您的语法是错误的-方法返回模式通常用于new
(jQuery插件不使用该模式)或作为立即调用的函数表达式的返回值。您需要将其包装为:$.plugin=(function(){…})(
@user397916不是真的,我是从阅读jQuery源代码中学到的。这真的很好,因为它让你的插件有私有变量。@user397916一个例子可以在jQuery指南中找到
add: function(params) {
var self = this;
$.each(params["css"], function(key,value) {
self.loadedcss.push(value);
});
},