我有两个jQuery选择器,我没有找到第三个“蛮力”方法所需的选项。我完全丧失了原因。每个看起来像他们应该和我验证文件已完全加载时,选择器运行。我在选择器中尝试了每个值和文本,并在我的页面中获得了相同的结果。JQuery Selector无法正常工作,循环会执行。为什么?
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>
的HTML是使用以下的jquery负载方法(其中theType是从一个html来的值选择控制),以及在相关联的JavaScript动态加载
第一选择语句:
$("#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,这两个选择器显示它们正常工作。我通过测试发现的是
- 该变量确实具有预期值。
- 文本选择器在我的页面上无法正常工作
- 值选择器确实选择了一个对象。然而,我无法确定对象是什么,attr()方法没有设置目标属性值。
我可以跟我发现的那样工作,只是想找出为什么这不起作用。猜测它与动态加载的html和javascript有关吗?
我没有使用选择选项[文本=“”]与相同的结果。你是说这个工作应该或者由于处理这些功能的方式在这种情况下不起作用? – Jim
属性选择器语法对于实际属性确实是** only **; 'text'不是一个属性。 – Pointy
我更新了我的代码,以便在为select生成选项并且选择器现在可以工作时包含value属性。谢谢你回答,并明确表示。 – Jim