2015-11-04 16 views
-2

我有一个这样的名单:得到一个有序列表的数据和设置成选择的jQuery

<ol class="list"> 
     <li id="1">One</li> 
     <li id="2">Two</li> 
     <li id="3">Three</li> 
</ol> 
<select id="npip"></select> 

我想所有从每个<li>(id和text)的DATAS,并将它们设置成选择组件。我的意思是,我想是这样的:

<select id="npip"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
</select> 

我得到了这样一个解决方案,从Arvilis中号

$(".list li").each(function(key, value){ 
    $("#npip").append(new Option($(value).html(), $(value).prop("id"))); 
    alert($("#npip option").val()); 
}); 

但是,这只是给我的每<li>的文本选择文本的选择,但我也需要每个<li>的id作为每个选项的值。我试过这个:

$(".list li").each(function(key, value){ 
    $("#npip").append(new Option($(value).html(),$(value).attr("value",value.id))); 
    alert($("#npip option").val()); 
}); 

用这个我只是得到默认值0.我做错了什么?

+1

你从Arvilis得到的代码工作正常:http://jsfiddle.net/mgokrj1s/。究竟是什么问题? –

+0

我没有得到这个代码的每个选项的价值 –

+0

虽然它在那里。如果你检查我链接到的jsFiddle的DOM可以看到它。你为什么认为它不在那里? –

回答

1

您可以使用value.id,因为值代表li元素及其id属性可以使用。您正在提醒select的val()。这将始终给选择的选定项目。由于select的选择在每个循环中都没有改变,所以对于所有的迭代都会得到1。

Live Demo

$(".list li").each(function(key, value){ 
    $("#npip").append(new Option($(value).html(), value.id));   
}); 

要检查你所拥有的,通过它每个选项迭代。

$("#npip option").each(function(key, value){ 
    alert($(this).val()); 
}); 
相关问题