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; });