2014-12-04 25 views
2

我想获取.option的每个值并将其附加到标签,就像选项一样。
我已经试过这样:取每个班级的价值,并将其附加到<select>

$(".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> 

但它不能正常工作,其追加为他们在选择标签选项,但它也陆续会将每个值之一。

jsFiddle

+1

注意:不是'$('')',你会更安全的使用函数添加属性和HTML,而不是一串字符串操作:'$('').val(add.toLowerCase())。html(add)' – 2014-12-04 20:39:56

+0

@Joeenos这是我做的第一件事,但自从我重新拉动.option,它没有工作,我最终“desfigurating”它喜欢这样的沮丧... – Alin 2014-12-04 20:59:48

回答

4

你是一个.each但重新选择里面的选项。只需使用this关键字:

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

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

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

}); 

Fiddle

+0

该死的......我只是不敢相信......我现在觉得这么愚蠢,+1并且接受:)谢谢 – Alin 2014-12-04 21:01:16

+0

@Alin编程,总是那些f * ck我们的小东西 – 2014-12-04 21:03:22

+0

是的,我打电话给它一晚:)再次感谢:) – Alin 2014-12-04 21:04:59

2

你再拉,每次.option。既然你在循环的时候,你只关心当前的:

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

好吧......就像我说过的,我现在觉得很愚蠢......我想我会称它为一个晚上...... +1 – Alin 2014-12-04 21:02:41

2

说不上来,如果有人感兴趣,但我创建一个使用递归函数相同的结果:

(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>

+1

好吧,这确实有效,它可能派上用场,谁知道,谢谢。 +1 – Alin 2014-12-04 21:06:56

相关问题