Javascript - 将包含变量的 html 字符串作为参数传递
Javascript - Pass html string containing variables as parameter
我想执行一个将 (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 + " by " + v.artist).
简而言之,我想打印一个字符串,其中包含在 .each 循环之前不存在的变量。
希望有人能帮帮我!
提前致谢,
伊恩·温辛克
使用回调函数创建值:
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; });
我想执行一个将 (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 + " by " + v.artist).
简而言之,我想打印一个字符串,其中包含在 .each 循环之前不存在的变量。
希望有人能帮帮我!
提前致谢,
伊恩·温辛克
使用回调函数创建值:
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; });