获取每个类值并将其附加到<select> </select>

时间:2014-12-04 20:34:51

标签: jquery html html-select

我想获取.option的每个值,并将其作为选项附加到标记 我试过这个:

$( ".option" ).each(function() {
    var add = $( ".option" ).text();        
    $('<option value="' + add.toLowerCase() + '">' + add + '</option>' ).appendTo( $( "#select" ) );;
});

HTML

<select id="select">

</select>

<div class="option">Lamp</div>
<div class="option">Lamp2</div>
<div class="option">Lamp3</div>

但是它无法正常工作,它会将它们作为选项添加到select标记中,但它也会逐个放置每个值。

jsFiddle

3 个答案:

答案 0 :(得分:4)

您在.each但在其中重新选择了您的选项。只需使用this关键字:

即可
$( ".option" ).each(function(){

    var add = $( this ).text();

    $('<option value="' + add.toLowerCase() + '">' + add + '</option>' ).appendTo( $( "#select" ) );

});

Fiddle

答案 1 :(得分:2)

您每次都会重新拉.option。由于你处于循环中,你只关心当前的那个:

var add = $(this).text();

答案 2 :(得分:2)

Dunno如果有人有趣但我使用递归函数创建相同的结果:

(function add(obj, i) {
  console.log(i);
  if (i < obj.length) {
    var txt1 = $(obj).eq(i).text()
    $("<option>" + txt1 + "</option>").appendTo("select");
    i++;
    return add(obj, i);
  } else {
    return 0;
  }
}($(".option"), 0));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="select"></select>
<div class="option">Lamp</div>
<div class="option">Lamp2</div>
<div class="option">Lamp3</div>