我正在尝试使用月度值填充两个<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。
答案 0 :(得分:1)
您将.val()
和.text()
分配给了错误的元素。您的.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 :(得分:-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>"' ) ;
}
或者这样,如果你想要你的风格
for ( var i = 0; i < 12; i++ )
{
var cm = moment().month(i);
$( '#m1, #m2' ).append($('<option/>').val(cm.format( "MM" )).text(cm.format( "MMM" ))) ;
}