用jQuery设置选择下拉菜单
问题描述:
该问题已被多次询问,但这不是重复。我正在使用for循环搜索包括select,input等元素的div。它将类名称与对象参数匹配,如果匹配,则设置元素的值。用jQuery设置选择下拉菜单
for(var i in obj) {
if(obj.hasOwnProperty(i)) {
$(editClone).find('.' +i).val(obj[i]);
}
}
它适用于输入要素精细,但与选择的元素它会删除所有的选项,只是将实际元素标签上的值。
这是select语句之前,我跑我的javascript:
<select class="type">
<option value="Home">Home</option>
<option value="Work">Work</option>
<option value="Mobile">Mobile</option>
<option value="Other">Other</option>
</select>
后,我运行的代码(在Firebug验证检查):
<select class="type">Mobile</select>
它为什么要这样做呢?我认为val()应该设置一个匹配的选项标签来选择。对象值和选项标签是匹配的,但它没有做到它应该做的。我在这里做错了什么?
原来我有DIV,我试图克隆嵌套在HTML中的错误位置以及javascript中的错误克隆调用。完全不相关的错误。下面的答案是正确的,它只是没有在我的情况下工作,因为我不明白我遇到的问题。
答
<select class="type">Mobile</select>
无效。一个选择需要有内部option
标签它
这是你的代码的工作版本:
<select class="type">
<option value="0">0</option>
<option value="A">A</option>
</select>
脚本:
$(function() {
var obj = { type: "A" };
var editClone = $(document);
for(var i in obj) {
if(obj.hasOwnProperty(i)) {
$(editClone).find('.' + i).val(obj[i]);
}
}
});
我希望我能说工作,但那正是我已经有的。我只是没有在我的示例代码中包含对象和editClone,因为它是无关紧要的。出于某种原因,val()将替换select语句内的html(),而不是选择选项并选择匹配的语句。 – ryandlf 2012-01-12 04:16:41
Select类最初有选项,而Mobile就是其中一种选择。 JavaScript将使用Mobile替换所有选项。 – ryandlf 2012-01-12 04:17:28
@ryandlf - 它不会取代任何html。这只是设置A选项,就像你想要的那样。检查铬开发工具或萤火虫中的HTML看看自己:) – 2012-01-12 04:27:07