gpt4 book ai didi

javascript - 将闭包传递给 Jquery $.each

转载 作者:行者123 更新时间:2023-12-01 02:30:35 24 4
gpt4 key购买 nike

我有一个函数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());
}

当我这样做时,我收到以下错误:“未捕获类型错误:无法调用未定义的方法‘call’”。我知道 funclist.push($(this).text()); 中的对象 this 必须更改为其他内容但我不知道要做什么。我怎样才能做到这一点?

最佳答案

您立即调用 func1(list) ,然后将其返回值(未定义,因为它没有 return 语句)传递给 $.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());
}

关于javascript - 将闭包传递给 Jquery $.each,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18533902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com