我想获取.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标记中,但它也会逐个放置每个值。
答案 0 :(得分:4)
您在.each
但在其中重新选择了您的选项。只需使用this
关键字:
$( ".option" ).each(function(){
var add = $( this ).text();
$('<option value="' + add.toLowerCase() + '">' + add + '</option>' ).appendTo( $( "#select" ) );
});
答案 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>