2016-07-29 47 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

相關問題