Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery选择器不工作,循环不工作。为什么?_Javascript_Jquery - Fatal编程技术网

Javascript JQuery选择器不工作,循环不工作。为什么?

Javascript JQuery选择器不工作,循环不工作。为什么?,javascript,jquery,Javascript,Jquery,我使用了两个jquery选择器,它们没有找到第三个“暴力”方法所需要的选项。我完全不知道为什么。每一个看起来都应该是这样的,当选择器运行时,我验证了文档已完全加载。我在选择器中分别使用值和文本进行了尝试,在我的页面中得到了相同的结果。使用下面的jquery加载方法(其中类型是来自html选择控件的值)以及关联的javascript动态加载html: var theType = $('#TicketType option:selected').val(); var theId = $("#Id"

我使用了两个jquery选择器,它们没有找到第三个“暴力”方法所需要的选项。我完全不知道为什么。每一个看起来都应该是这样的,当选择器运行时,我验证了文档已完全加载。我在选择器中分别使用值和文本进行了尝试,在我的页面中得到了相同的结果。使用下面的jquery加载方法(其中类型是来自html选择控件的值)以及关联的javascript动态加载html:

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匹配。