向Jquery$.each传递一个闭包
Passing a closure to Jquery $.each
我有一个函数requestXML
,它进行异步调用以获取xml文件
我也有这个实现,工作良好
function show(url){
requestXML(url, function(xml){
var items = $(xml).find('item');
var list = new Array();
$.each(items, function(){
list.push($(this).text());
});
displayList(list);
});
}
然而,我想通过执行使show函数更通用
function show(url, func1){
requestXML(url, function(xml){
var items = $(xml).find('item');
var list = new Array();
$.each(items, func1(list));
displayList(list);
});
}
var func1 = function(list){
list.push($(this).text());
}
当我这样做时,我会得到以下错误:"Uncaught TypeError:无法调用未定义的方法'call'"。我知道func
中list.push($(this).text());
中的对象this
必须更改为其他对象,但我不知道更改为什么。我怎样才能做到这一点?
您立即调用func1(list)
,然后将其返回值(undefined
,因为它没有返回语句)传递给$.each
。
$.each(items, func1(list));
相当于:
var result = func1(list); // Will be undefined
$.each(items, result);
你可以用这个代替:
function show(url, func1){
requestXML(url, function(xml){
var items = $(xml).find('item');
var list = new Array();
$.each(items, $.proxy(func1, list));
displayList(list);
});
}
var func1 = function(el){
this.push($(el).text());
}
您需要类似的东西
function show(url, func1){
requestXML(url, function(xml){
var items = $(xml).find('item');
var list = new Array();
$.each(items, function(idx, value){
func1.call(this, list, idx, value)
});
displayList(list);
});
}
var func1 = function(list, idx, value){
list.push($(this).text());
}
试试这个。。。
function show(url, func1){
var list = [];
var func1 = function(ele){
list.push($(ele).text());
}
requestXML(url, function(xml){
var items = $(xml).find('item');
$.each(items, func1(ele));
displayList(list);
});
}
相关文章:
- 使用Google闭包编译器包含一个Ecmascript 6类
- 在谷歌地图示例中为 Ajax 调用制作一个 JavaScript 闭包
- 闭包中的本地变量从外部更改.这是一个javascript错误,或者我做错了什么
- 将一个简单的函数声明形成JavaScript中的闭包
- 递增并存储一个“;私人的“;使用闭包的变量
- 为什么需要在这个闭包中创建一个变量
- 这是闭包的一个很好的例子吗?
- 为什么允许通过原型继承访问另一个闭包范围内的私有变量
- 为什么这不是一个javascript闭包
- JavaScript 中的闭包:再举一个例子
- 这是一个JavaScript闭包错误吗?
- 闭包的意外行为:回调保存最后一个值
- Javascript - 在闭包中使用函数构造函数是一个坏主意吗?
- 我们是否可以使用谷歌闭包创建一个带有复选框和组合框的对话框
- 向Jquery$.each传递一个闭包
- 我如何告诉谷歌闭包编译器不要删除一个变量
- Is回调函数始终是一个闭包
- ES2015导出的类是否创建了一个闭包
- 我如何把所有这1200+行自定义javascript到一个闭包,所以没有全局变量
- 一个闭包中的jquery tmpl