2014-12-04 26 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

相關問題