我在<select>
填写了来自ajax电话的回复。
这是JS代码:
var myOptions = {val1 : project1,
val2 : project1,
val4 : project1,
val5 : project1,
};
$.each(myOptions, function(val, text) {
$('#projectid').append(
$('<option ></option>').val(val).html(text)
);
});
我的HTML代码:
<input type="hidden" name="ehidden" value="true">
<select name="project" id="projectid"></select>
我得到的所需DropDown列表没问题,但我无法将第一个<option>
设置为默认选择。
这是我已尝试过的一些代码:
$('select.projectid').find('option[value="val1"]').prop('selected', true);
我没有错误,但也没有结果。与此相同:
$("#projectid").val($("#projectid option:first").val());
第二个问题:
第一次<option>
在我第一次选择鼠标时不可用,我必须先选择第二个<option>
,然后再选择第一个{{1}}。
答案 0 :(得分:1)
你的选择器在这一行是错误的:
$('select.projectid').find('option[value="val1"]').prop('selected', true);
这是选择class
projectid
的下拉列表。它应该是:
$('#projectid').find('option[value="val1"]').prop('selected', true);
...将选择id
projectid
的元素。
关于此代码:
$("#projectid").val($("#projectid option:first").val());
我不确定您打算做什么,但会在下拉列表中选择第一个选项。如果未选择其他选项,则默认选择第一个选项。因此,如果您在页面加载时运行此代码,它当然不会执行任何操作,因为已经选择了第一个选项。
关于你的第二个&#34;问题,您需要将其作为单独的问题发布,因为它与此问题无关。但是,一定要在摆出它之前在这里搜索答案。
答案 1 :(得分:0)
您可以对代码进行一些改进,使其更简单,并允许您轻松标记所选选项。这是一个解决问题的方法:jsfiddle
var myOptions = [
{ name: "A", value: "val1", selected: true},
{ name: "B", value: "val2"},
{ name: "C", value: "val3"},
{ name: "D", value: "val4"}
];
var optionsHtml = "";
for(var i = 0; i < myOptions.length; i++) {
var val = myOptions[i];
optionsHtml += '<option value = "' + val.value + '"';
if(val.selected)
optionsHtml += 'selected="' + val.selected + '"';
optionsHtml += '>' + val.name + '</option>';
}
$('#projectid').append(optionsHtml).selectmenu('refresh', true);;
<强>解释强>
您只想为您的选项构建html,然后将所有选择附加一次。这将提高代码的性能,因为您只需追加一次,从而导致浏览器重绘一次。
这样做可以将选项构建为字符串。我不知道您如何确定选择哪个选项,但您应该能够更改if子句以满足您的需求。
您尝试了什么
$('select.projectid').find('option[value="val1"]').prop('selected', true);
这不起作用,因为你的选择器是错误的。您在此处使用id作为类: $(&#39;#专案编号&#39)
$("#projectid").val($("#projectid option:first").val());
我不确定为什么这不起作用。但是你不希望这样做,因为很难动态地选择该选项。
修改强>
要在jQuery Mobile中选择更新其选择,您必须调用refresh。请参阅文档here。