2016-07-29 109 views
0

我试图用两个月的值填充两个<select>元素。我试图用jQuery的$.each()来做到这一点,而不是重复这样做的逻辑。这里有一些代码:

for (var i = 0; i < 12; i++) 
{ 
    var cm = moment().month(i); 
    $('#m1, #m2').each(function(i, el) { 
    $(el).append($("<option />")).val(cm.format("MM")).text(cm.format("MMM")) ; 
    }); 
} 

我认为理论上我想要做的是正确的,只是在语法上不符合jQuery。我遇到的问题是option元素没有被追加。如果我分别替换$.each()代码和$('#m1')$('#m2')的确切东西,它就会起作用。所以这个问题很可能是我如何使用$.each()

这是使用jQuery 3.1.0。

+3

那么,什么是你正在运行到问题? – entropic

+0

更新后的文章反映了实际问题,对此表示遗憾。 – randombits

+1

你在这里不需要'each()',你可以'同时向这两个元素追加()' –

回答

1

你有.val().text()分配给了错误的ELE换货。你.append()行应如下:

$(el).append($("<option />").val(cm.format("MM")).text(cm.format("MMM"))) ; 

同样的,最简单的方法是避免.each()环完全并调用.append()方法:

$("#m1, #m2").append($("<option />").val(cm.format("MM")).text(cm.format("MMM"))); 
-1

如果你想尝试这种方式

for (var i = 0; i < 12; i++) 
{ 
    var cm = moment().month(i); 
    $('#m1, #m2').append('<option value="'+cm.format("MM")+'">'+cm.format("MMM")+'</option>"') ; 
} 

Working fiddle

或者这样你的风格

for (var i = 0; i < 12; i++) 
{ 
    var cm = moment().month(i); 
    $('#m1, #m2').append($('<option/>').val(cm.format("MM")).text(cm.format("MMM"))) ; 
} 

Working fiddle

+0

@Downvoter为什么?这个答案有什么不对? – Luca

相关问题