loc*_*cto 2 javascript jquery closures
我有一个函数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);
});
}
Run Code Online (Sandbox Code Playgroud)
但是,我想通过这样做使函数显示更通用
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());
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到以下错误:"未捕获的TypeError:无法调用未定义的方法'调用'".我知道对象this从list.push($(this).text());在func已改为别的东西,但我不知道是什么.我怎样才能做到这一点?
你正在func1(list)立即调用然后传递它的返回值(undefined因为它没有返回语句)$.each.
$.each(items, func1(list));
Run Code Online (Sandbox Code Playgroud)
相当于:
var result = func1(list); // Will be undefined
$.each(items, result);
Run Code Online (Sandbox Code Playgroud)
您可以使用此代替:
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());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
785 次 |
| 最近记录: |