Jquery 按顺序向DOM添加各种对象

Jquery 按顺序向DOM添加各种对象,jquery,Jquery,我已经了解了如何通过此处将同一对象顺序添加到DOM中- 我的问题有点复杂,因为我有各种表单模板供用户选择。当选择其中一个模板时,事件会将新对象追加到数据库中,然后通过id(color_1、color_2、color_3、color_4、color_5)将其添加到数据库中 前 “最多可选择五种颜色” 对象模板有三种主要颜色,每种颜色都有三种色调: 红色(蔓越莓、栗色、猩红色) 格林(亨特、杰德、凯利) 蓝色(海军蓝、皇家蓝、长春花) 例如,表单和红色模板如下所示: <div class="c

我已经了解了如何通过此处将同一对象顺序添加到DOM中-

我的问题有点复杂,因为我有各种表单模板供用户选择。当选择其中一个模板时,事件会将新对象追加到数据库中,然后通过id(color_1、color_2、color_3、color_4、color_5)将其添加到数据库中

“最多可选择五种颜色” 对象模板有三种主要颜色,每种颜色都有三种色调: 红色(蔓越莓、栗色、猩红色) 格林(亨特、杰德、凯利) 蓝色(海军蓝、皇家蓝、长春花)

例如,表单和红色模板如下所示:

<div class="color-container"></div>
<form action='/colors' method='post' class="form-horizontal">
<div class="red-template">      
   <p>
      <select class="red-shade input-medium">
        <option>cranberry</option>
        <option>maroon</option>
        <option>scarlet</option>
      </select>
   </p>
</div>
<div class="green-template">Green Ex</div>
<div class="blue-template">Blue Ex</div>
<script>
  $(document).ready(function() {
    $('.add-red').click(function(e) {
  e.preventDefault();

    $(".red-template")
      .clone()
      .show()
      .removeClass("red-template")
      .addClass("red_" + i)
      .appendTo(".color-container");
    });

    $(".red-shade")
      .removeClass(".red-shade")
      .addClass("shade_" + i);
    });

 });
</script>


蔓越莓
褐红色的
猩红

绿色前 蓝色前任
JQuery如下所示:

<div class="color-container"></div>
<form action='/colors' method='post' class="form-horizontal">
<div class="red-template">      
   <p>
      <select class="red-shade input-medium">
        <option>cranberry</option>
        <option>maroon</option>
        <option>scarlet</option>
      </select>
   </p>
</div>
<div class="green-template">Green Ex</div>
<div class="blue-template">Blue Ex</div>
<script>
  $(document).ready(function() {
    $('.add-red').click(function(e) {
  e.preventDefault();

    $(".red-template")
      .clone()
      .show()
      .removeClass("red-template")
      .addClass("red_" + i)
      .appendTo(".color-container");
    });

    $(".red-shade")
      .removeClass(".red-shade")
      .addClass("shade_" + i);
    });

 });
</script>

$(文档).ready(函数(){
$('.add red')。单击(函数(e){
e、 预防默认值();
$(“.red模板”)
.clone()
.show()
.removeClass(“红色模板”)
.addClass(“红色”+i)
.appendTo(“.color container”);
});
$(“红色阴影”)
.removeClass(“红色阴影”)
.addClass(“阴影”+i);
});
});
对于蓝色和绿色,我有相同的HTML和JQuery。如果添加了红色模板,我需要将div class=“red template”更改为class=“red\u 1”,然后将class=“red shade”更改为class=“shade\u 1”。如果选择了另一种红色,“红色2”和“阴影2”

我认为以下措施应该有效:

for(i=1;i<=5;i++) {
$('.red-template').attr('class', 'red_' + i);
}

for(i=1;i发布提琴会帮助我们,帮助你。目前,我们只是猜测你的问题可能是什么。正如@Neil提到的,你的代码错误地使用了id(对于初学者)

我在这里做了一把小提琴,看看这是否就是你想要的:

在回答您的问题时,您可能会进入以下模块:

$(document).ready(function () {
      $('select.input-medium').on('change', function (e) {
          e.preventDefault();

         ***here***
      });
  });

您应该只有一个具有唯一ID的元素。您应该使用一个颜色类而不是ID。此外,您不能在任何一个元素上有多个ID,因此,同样,您应该为color_1等使用类。很抱歉造成混淆。我从未使用过JSFIDLE,这应该可以帮助我更好地解释我试图实现的目标。我需要按顺序计算我添加的每个对象。这是我最近一次迭代的一把小提琴-Hi@csakon你的小提琴上有一个语法错误,我修复了它并显示了正在添加的项目的计数器。让我知道这是你想要的还是我没有走上正确的轨道:)