0
function buildOrder(data) {
    var $fragment;
    $fragment = $('<div/>');
    for (var i = 0; i < data.length; i++) {
        $fragment.append('<div class="row-container"><div class="row cupcake-row">' + data[i].name + '</div><div class="clear"></div></div>');
    }
    $('#review-section').append($fragment);
}

我本质上想添加一个标签,其中包含使用 for 循环动态创建的 50 个选项。但我不确定将它添加到<div class="row-container"/> 我知道的 php 中的语法是什么我只会在中间抛出循环并回显选项,但这在 javascript 中不起作用。

编辑:

它看起来像这样:

$fragment.append('<div class="row-container"><div class="row cupcake-row">' + data[i].name + '</div><select><option value="1">1</option> etc...</select><div class="clear"></div></div>');
4

3 回答 3

1

您可以将函数传递给.append并在那里执行循环:

$("<div>").append(function() {
  var $select = $("<select>");
  for(var i = 1; i <= 50; i++) {
    $("<option>").text(i).val(i).appendTo($select);
  }
  return $select;
});

// returns a jQuery object with one div element (with children):
// <div>
//   <select>
//     <option value="1">1</option>
//     ...
//   </select>
// </div>

混合到您的代码中,它将类似于:

var $fragment = $("<div>");

for (var i = 0; i < data.length; i++) {
    var $container = $("<div>").addClass("row-container")
                               .appendTo($fragment);

    $("<div>").addClass("row cupcake-row")
              .text(data[i].name)
              .appendTo($container);

    $("<div>").append(function() {
      var $select = $("<select>");
      for(var i = 1; i <= 50; i++) {
        $("<option>").text(i).val(i).appendTo($select);
      }
      return $select;
    }).appendTo($container);

    $("<div>").addClass("clear")
              .appendTo($container);
}

$("#review-section").append($fragment);
于 2012-05-21T16:26:59.623 回答
0

根据您发布的代码:

function buildOrder(data) {
    var $fragment;
    $fragment = '<div><div class="row-container">';
    for (var i = 0; i < data.length; i++) {
        $fragment += '<div class="row cupcake-row">' + data[i].name + '</div><div class="clear"></div>';
    }
    $fragment += '</div></div>';
    $('#review-section').append($fragment);
}

但是在您发布的代码中与您的帖子标题不匹配,您提到select标签的地方以及您尝试使用的代码中div

如果你想创建一个select,那么类似:

function buildOrder(data) {
        var $fragment;
        $fragment = '<div class="row-container"><select>'; // taking select within your div
        for (var i = 0; i < data.length; i++) {
            // adding options to select
            $fragment += '<option value="'+ data[i].name +'">' + data[i].name + '</option>';
        }
        $fragment += '</select></div>'; // end select and div
        $('#review-section').append($fragment);
    }
于 2012-05-21T16:19:12.210 回答
0

尝试这样的事情

function buildOrder(data) {
    var $fragment = $('<div></div>');
    var options = [];

    for (var i = 0; i < data.length; i++) {
        options.push('<div class="row-container"><div class="row cupcake-row">' + data[i].name + '</div><div class="clear"></div></div>');
    }
    $fragment.html(options.join("\n"));

    $('#review-section').append($fragment);
}
于 2012-05-21T16:22:57.340 回答