我有两个jquery选择器,我使用的没有找到所需的选项,第三个"暴力"方法做了。我完全失去了原因。每个看起来都应该是这样,我验证了文件在选择器运行时已满载。我在选择器中尝试了每个值和文本,并在我的页面中得到了相同的结果。使用下面的jquery加载方法动态加载html(其中theType是来自html选择控件的值)以及相关的javascript:
var theType = $('#TicketType option:selected').val();
var theId = $("#Id").val();
var url = '/SystemBuildSiteConfigs/' + theType + '/' + theId;
$('#ticketDiv').html("");
$("#ticketDiv").load(url, function (response, status, xhr) {
if (status == "error") {
alert("There was an error loading the " + theType + " form");
}
else {
$.getScript("/Scripts/SiteConfig" + theType + ".js", function () {
});
}
});
有问题的html选择:
<select name="SupportOrganization" class="form-control" id="SupportOrganization">
<option value="">- Please Select -</option>
<option>Auxiliary IT</option>
<option>Business Intelligence</option>
<option>Change Management</option>
<option>Engineering RnD</option>
<option>Enterprise Business Solutions</option>
<option>Enterprise Solutions</option>
<option selected="selected">Hosting</option>
<option>Infrastructure and Operations</option>
<option>Manufacturing</option>
<option>Professional</option>
<option>Support</option>
</select>
第一个选择语句:
$("#SupportOrganization").find('option[value="' + jsonObj.SupportOrganization + '"]').attr("selected", true);
第二个选择语句:
$('#SupportOrganization option[value="' + jsonObj.SupportOrganization + '"]').attr("selected", true);
什么有效:
$('#SupportOrganization option').each(function (idx, ele) {
if ($(ele).val() == jsonObj.SupportOrganization)
$(ele).attr("selected", true);
});
页面段正确加载,并且所有其他启动内容的html加载的javascript控件都按预期执行。另一种页面类型加载并触发正确执行类似功能。使用jsfiddle,两个选择器都显示它们正常工作。我通过测试发现的是
我可以使用我发现的可行的方法,只是想知道为什么这不起作用。猜测它与动态加载的html和javascript有关吗?
答案 0 :(得分:5)
如果缺少“value”属性,jQuery .val()
函数会使用<option>
元素的“hook”来返回元素的文本内容。您的<option>
元素没有“value”属性,因此选择器不匹配。
答案 1 :(得分:2)
您应该使用选择option
功能选择.val(string)
,如果在{{1}的选项中可用,它会找到option
匹配的字符串}属性。
因此,您的选项应包含值属性,在您的情况下缺少该属性,例如:
value
&#13;
$(function(){
$("#userEducationDegree").val('A');
});
&#13;
答案 2 :(得分:1)
要继续@Pointy上面所说的,你应该尝试:包含而不是。
$('#SupportOrganization option:contains("' + jsonObj.SupportOrganization + '")').attr("selected", true);