Javascript jquery';s val()不';t集';选定的';属性

Javascript jquery';s val()不';t集';选定的';属性,javascript,jquery,Javascript,Jquery,我正在使用jquery在表中创建选择选项字段。但由于未知原因,我无法设置所选选项 在下面的示例中,有四个选择选项,只有最后一个选项选择了正确的选项。有人能告诉我我的代码有什么问题吗 编辑: 我改为代码片段。现在我们有3个例子: 1)我发布的原始示例。val()仅适用于第二个选择选项 2)与1相同,但附加到DOM是由ID而不是类完成的。此处仅正确设置了第二个选择选项 3)选择选项在HTML中定义。val()用于选择选项2。在这里它工作正常 问题: 1)为什么在示例1中,只有第二个选择选项设置正确

我正在使用jquery在表中创建选择选项字段。但由于未知原因,我无法设置所选选项

在下面的示例中,有四个选择选项,只有最后一个选项选择了正确的选项。有人能告诉我我的代码有什么问题吗

编辑:
我改为代码片段。现在我们有3个例子:
1)我发布的原始示例。val()仅适用于第二个选择选项
2)与1相同,但附加到DOM是由ID而不是类完成的。此处仅正确设置了第二个选择选项
3)选择选项在HTML中定义。val()用于选择选项2。在这里它工作正常

问题:
1)为什么在示例1中,只有第二个选择选项设置正确
2)为什么在示例2中,第一个选择选项根本不渲染

我知道解决方法是通过在“option”元素上设置属性“selected”来选择正确的选项,但我认为方法val()的行为并不一致,我想了解原因。也许我没有按设计使用它,但到目前为止还不能这么说

//示例1
$('')
.append($('',{value:“1”}).text(“第一个选项”))
.append($('',{value:“2”}).text(“第二个选项”))
.append($('',{value:“3”}).text(“第三个选项”))
.val(“2”)
.appendTo($('.td1'));
//例2
$('')
.append($('',{value:“1”}).text(“第一个选项”))
.append($('',{value:“2”}).text(“第二个选项”))
.append($('',{value:“3”}).text(“第三个选项”))
.val(“2”)
.appendTo($('#td21'))
.附于($);
//例3
$('.td3 select').val(“2”)

例1
例2
例3
第一购股权
第二种选择
第三种选择
第一购股权
第二种选择
第三种选择

您可以预先选择一个选项,方法是为其指定属性
selected
,如下所示:

.append($('<option/>', {
    value: "2",
    selected: true
})
.append($(''){
值:“2”,
所选:真
})
$(“”)
.附加($(''){
值:“1”
}).text(“第一选项”))
.附加($(''){
值:“2”,
所选:真
}).text(“第二选项”))
.附加($(''){
值:“3”
}).文本(“第三选项”))
.appendTo($('.col2'));

11
12
13
14
21
22
23
24
31
32
33
34
41
42
43
44

您可以预先选择一个选项,方法是为其指定属性
selected
,如下所示:

.append($('<option/>', {
    value: "2",
    selected: true
})
.append($(''){
值:“2”,
所选:真
})
$(“”)
.附加($(''){
值:“1”
}).text(“第一选项”))
.附加($(''){
值:“2”,
所选:真
}).text(“第二选项”))
.附加($(''){
值:“3”
}).文本(“第三选项”))
.appendTo($('.col2'));

11
12
13
14
21
22
23
24
31
32
33
34
41
42
43
44

问题是因为您正在设置值,而不是select中
选项
上的
selected
属性。因此,在
.col2
元素之间克隆元素时,没有
selected
选项。为此,您需要设置
val()
单独或在创建select时将
所选属性直接放在
选项上。根据JQuery文档,val()可用于设置所选属性()。这里有一个在单个和多个选择选项上设置选择的示例。这是正确的-但请注意,它设置的是属性,而不是属性。因此,您存在问题,以及为什么下面的解决方案有效。@Rorymcrossan我不确定是否理解您的观点。val()在select选项上运行良好,但并非在所有情况下都有效。请看一下我的示例(编辑的代码片段)。当我调试val()方法时,我发现select节点实际上在选项集合上运行,并设置属性“selected”(select有一个扩展方法valHooks)。问题是因为您正在设置值,而不是select中
选项
上的
selected
属性。因此,在
.col2
元素之间克隆元素时,没有
selected
选项。为此,您需要设置
val()
单独或在创建select时将
所选属性直接放在
选项上。根据JQuery文档,val()可用于设置所选属性()。这里有一个在单个和多个选择选项上设置选择的示例。这是正确的-但请注意,它设置的是属性,而不是属性。因此,您存在问题,以及为什么下面的解决方案有效。@Rorymcrossan我不确定是否理解您的观点。val()在select选项上运行良好,但并非在所有情况下都有效。请看一下我的示例(编辑的代码片段)。当我调试val()方法时,我发现select节点实际上在选项集合上运行,并设置属性“selected”(select有一个扩展方法valHooks)。谢谢您的回答。在我的应用程序中,我在一个表中动态创建了许多选择选项字段。我正在寻找一种解决方案,不必在选项列表上循环并检查我必须设置属性“selected”。使用val()方法循环是隐式完成的,因此代码看起来更干净。@user1308240然后在事实之后设置选项属性:
…find('option[value=“”+yourVal+'“])。prop('selected',true)
谢谢你的回答。在我的应用程序中,我有很多