Javascript - 传递包含变量的html字符串作为参数

时间:2015-03-26 21:18:53

标签: javascript jquery variables parameters

我想执行一个将(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

1 个答案:

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