我正在尝试在下拉菜单/选择中设置选项。我以前做过这个,但由于某种原因我得到了一个错误,我不知道为什么。
代码
var _loc = {
ALL_BUYS: [{ Text: "All Buys", Value: "AAA"}],
NETWORK_BREAK: [{ Text: "Network Break", Value: "NTN"}],
SYNDICATED_BREAK: [{ Text: "Syndicated Break", Value: "STA"}],
LOCAL_BREAK: [{ Text: "Local Break", Value: "LTA"}],
NATIONAL_LOCAL: [{ Text: "National/Local", Value: "LTN"}],
LOCAL_LOCAL: [{ Text: "Local/Local", Value: "LTL"}]//,
};
lstOptions = $("<select></select>");
$.each(_loc, function (i, item)
{
$("<option></option>")
.appendTo(lstOptions)
.html(item.Text)
.val(item.Value) // receive error: Object has no method 'val'
});
答案 0 :(得分:3)
您没有正确抓取对象的值。
格式如下:
{key1:[{0, 1}], key2:[{0, 1}], key3:[{0, 1}]}
当您使用$.each
时,它会选择处于此状态的每一个:
[{0, 1}]
在第一次迭代中,它将选择与key1相关联的值,在第二次,key2等上。
由于您在每个键的值中嵌套了数组,因此您需要指定它在匹配值中找到第一个数组:
var _loc = {
ALL_BUYS: [{ Text: "All Buys", Value: "AAA"}],
NETWORK_BREAK: [{ Text: "Network Break", Value: "NTN"}],
SYNDICATED_BREAK: [{ Text: "Syndicated Break", Value: "STA"}],
LOCAL_BREAK: [{ Text: "Local Break", Value: "LTA"}],
NATIONAL_LOCAL: [{ Text: "National/Local", Value: "LTN"}],
LOCAL_LOCAL: [{ Text: "Local/Local", Value: "LTL"}]
};
lstOptions = $("select");
$.each(_loc, function(i, item){
$("<option></option>")
.appendTo(lstOptions)
.html(item[0].Text)
.attr("value", item[0].Value);
});
请注意item[0]
。这样做是在它抓取的值中选择索引为0
的数组。因为只有一个,那个单个数组的索引是0
,所以它选择那个特定的索引。然后你找到并设置它的文本和值。
另请注意,我已将val()
更改为attr()
,因为option
元素不支持val()
(但您可以在select
上使用它} element设置其值等于此函数中指定的选项以使其被选中的选项。
提示:您还可以删除每个嵌套对象周围的文字数组指示符并使用原始方法。 Demo
答案 1 :(得分:0)
答案 2 :(得分:0)
.val()
用于获取表单元素的值。设置元素的value
属性不是捷径。为此,您可以使用:
.attr("value", item.Value)
答案 3 :(得分:0)
想出来。我希望循环中的项目采用以下格式
Item: "All Buys"
Value: "AAA"
相反,他们采用这种格式
[0]Option
Item: "All Buys"
Value: "AAA"
如果我将循环更改为此功能
$.each(_loc, function (i, item)
{
$("<option></option>")
.appendTo(lstOptions)
.html(item[0].Text)
.val(item[0].Value);
});