我想执行一个将(jQuery)li附加到ul的函数。现在我想传递一个字符串作为参数,如下所示:
v.name + " by " + v.artist
问题是v.name和v.artist不存在于函数外部,因为该函数包含.each循环:
function showAllItems (data, displayText) {
$("ul.result-list").empty();
$.each(data.results, function (k, v) {
var name = eval(displayText);
if ($("ul.chosen-list input#" + v.name).length == 0) {
$("ul.result-list")
.append($("<li>")
.append($("<input>", {id: v.name, value: v.name, type: "checkbox"}))
.append($("<label>", {html: name, for: v.name, class: "clickable"})));
}
});
}
我现在使用的是eval(displayText)将字符串转换为实数变量。但是现在我无法通过我之前说过的话(v.name +&#34; by&#34; + v.artist)。
简而言之,我想打印一个包含变量的字符串,这些变量在.each循环之前不存在。
我希望有人可以帮助我!
提前致谢,
Ian Wensink
答案 0 :(得分:1)
使用回调函数创建值:
function showAllItems (data, getDisplayText) {
$("ul.result-list").empty();
$.each(data.results, function (k, v) {
if ($("ul.chosen-list input#" + v.name).length == 0) {
var name = getDisplayText(v);
$("ul.result-list")
.append($("<li>")
.append($("<input>", {id: v.name, value: v.name, type: "checkbox"}))
.append($("<label>", {html: name, for: v.name, class: "clickable"}))
);
}
});
}
用法:
showAllItems(data, function(v){ return v.name + " by " + v.artist; });