我有以下情况
<div class="selectContainer">
<select size="1" id="kind">
<option value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
</select>
</div>
<div id="second">
<ul id="test"></ul></div>
我希望jQuery自动复制列表中的选项值,因此我将获得以下HTML
<div id="second">
<ul id="test">
<li id="one">one</li>
<li id="two">two</li>
<li id="three">three</li>
</ul>
</div>
我认为以下内容可行,但事实并非如此。我给了我一个带有'undefined'的列表项
$(function(){
$("#kind").each(function () {
li = '<li id="'+$(this).attr('value')+'">'+$(this).attr('text')+'</li>';
$("#test").html(li);
});
});
答案 0 :(得分:1)
尝试:
$(function(){
var lis = '';
$("#kind option").each(function () {
lis += '<li id="'+$(this).val()+'">'+$(this).text()+'</li>';
});
$("#test").html(lis);
});
您试图迭代#kind
,这是一个元素,即select元素。你应该迭代选项。此外,每次迭代时,您都在重置所有UL
的HTML。
答案 1 :(得分:1)
另一种方式,只是为了好玩(加上它既简洁又有效):
$("#test").html($("#kind > option").map(function() {
return '<li id="' + this.value + '">' + $(this).text() + '</li>';
}).get().join(""));
如果它有任何意义,这里是关于正常字符串追加与Array.join()
的讨论:
答案 2 :(得分:0)
尝试使用
$("option", "#kind").each(function () {
相反,看起来像选择本身也被转换
答案 3 :(得分:0)
这是一个有效的jsfiddle:fiddle demo
$(function(){
var li = '';
$("#kind option").each(function () {
li += '<li id="'+$(this).attr('value')+'">'+$(this).text()+'</li>';
});
$("#test").html(li);
});
答案 4 :(得分:-1)
你很接近,应该是
$(function(){
$("#kind option").each(function () {
li = '<li id="'+$(this).val()+'">'+$(this).text()+'</li>';
$("#test").append(li);
});
});