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 個のオプションを持つタグを追加したいと考えています。しかし、それをphpに追加する構文がどうなるかは<div class="row-container"/> わかりません。途中でループをスローしてオプションをエコーするだけですが、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 = $('<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 に答える
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 に答える