Javascript JQuery选择器不工作,循环不工作。为什么?
我使用了两个jquery选择器,它们没有找到第三个“暴力”方法所需要的选项。我完全不知道为什么。每一个看起来都应该是这样的,当选择器运行时,我验证了文档已完全加载。我在选择器中分别使用值和文本进行了尝试,在我的页面中得到了相同的结果。使用下面的jquery加载方法(其中类型是来自html选择控件的值)以及关联的javascript动态加载html:Javascript JQuery选择器不工作,循环不工作。为什么?,javascript,jquery,Javascript,Jquery,我使用了两个jquery选择器,它们没有找到第三个“暴力”方法所需要的选项。我完全不知道为什么。每一个看起来都应该是这样的,当选择器运行时,我验证了文档已完全加载。我在选择器中分别使用值和文本进行了尝试,在我的页面中得到了相同的结果。使用下面的jquery加载方法(其中类型是来自html选择控件的值)以及关联的javascript动态加载html: var theType = $('#TicketType option:selected').val(); var theId = $("#Id"
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都按预期执行。另一种页面类型正确加载和激发执行类似功能。使用JSFIDLE,两个选择器都显示它们工作正常。我通过测试发现
- 变量确实具有预期值李>
- 文本选择器在我的页面上无法正常工作
- 值选择器没有选择对象。但是,我无法确定对象是什么,attr()方法没有设置目标属性值李>
我可以用我发现有效的方法,只是想找出为什么不起作用。猜测是否与动态加载的html和javascript有关?如果缺少“value”属性,jQuery
.val()
函数将使用
元素的“钩子”返回元素的文本内容。您的
元素没有“value”属性,因此选择器不匹配。要继续@Pointy上面所说的内容,您应该尝试:contains
$('#SupportOrganization option:contains("' + jsonObj.SupportOrganization + '")').attr("selected", true);
您应该使用select
.val(string)
功能选择选项
,如果选项中有值
属性,它将找到选项
与匹配字符串
因此,您的选项应包含案例中缺少的值属性,例如:
$(函数(){
$(“#用户教育程度”).val('A');
});代码>
--挑选--
A.
B
C
我确实使用了选择器选项[text=”“],得到了相同的结果。你是说这应该是有效的,还是由于处理方式的原因,这些函数在这种情况下不起作用?属性选择器语法实际上只适用于实际属性<代码>文本
不是一个属性。我更新了代码,使其在为select生成选项时包含value属性,选择器现在可以工作了。感谢您的回答和澄清。我最初的想法也是这样,但是这些值是动态的,并且有可能在多个值中嵌入字符串,因此使用equals匹配。