2013-10-29 30 views
1

我试图在我的页面上找到所有<select>元素,获取索引,然后将每个索引作为值添加到所有选择的<option>。在这里,我有各自选择:使用jQuery,查找所有选择并追加索引值作为选项

<select class="select"></select> 
<select class="select"></select> 
<select class="select"></select> 
<select class="select"></select> 

var i = 0; 
    $(".select").each(function(){ 
    ++i; 
    }); 
    $(".select").each(function(){ 
    for (i > 0){ 
     $(this).append("<option val='" + i + "'>" + i + "</option>"); 
    } 
}); 

最后,我想实现将每个目标选择看起来像:

<select> 
    <option val="1">1</option> 
    <option val="2">2</option> 
    <option val="3">3</option> 
    <option val="4">4</option> 
    <option val="5">5</option> 
    <option val="6">6</option> 
    <option val="7">7</option> 
    <option val="8">8</option> 
    <option val="9">9</option> 
    <option val="10">10</option> 
</select> 

它看起来像我几乎没有...

+0

我应该你'i'吗? – kelunik

+1

雅知道,'每个'都带有自己的索引参数 – tymeJV

+0

@BlueSkies我犯了一个错误,并在最后一个片段中忽略了class =“select”。这不是一个要求,但我看到你的答案中有我的意图。每个选择应该看起来像我拥有的​​最后一个示例。 –

回答

1
var $selects = $("select"); 
var selCount = $selects.length; 

for(var i=1; i<=selCount; i++){ 
    $selects.append("<option value='" + i + "'>" + i + "</option>"); 
} 

http://jsfiddle.net/Wy643/

+0

这是我在自己的代码中得到的。我想我错了,假设我可以简单地使用i> 0并完成它。我不明白为什么,但确定。谢谢你的帮助。 –

1

如果因为总共有选择每个选择应该得到尽可能多的选择T,母鸡宥可以只是这样做:

var sel = $("select") 
sel.map(function(i, s) { 
    return $("<option>", {text: i, value: i})[0]; 
}).appendTo(sel); 

DEMO:http://jsfiddle.net/vmUpN/


这里有一个简单的JS版本,如果你有兴趣。

var sel = document.getElementsByTagName("select"); 
var opts = document.createDocumentFragment(); 

for (var i = 0; i < sel.length; i++) { 
    opts.appendChild(new Option(i, i)); 
} 
for (var i = 0; i < sel.length; i++) { 
    sel[i].appendChild(opts.cloneNode(true)); 
} 

DEMO:http://jsfiddle.net/vmUpN/1/

相关问题