Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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 更改Select元素后未更改Select属性_Javascript_Jquery_Html_Dom - Fatal编程技术网

Javascript 更改Select元素后未更改Select属性

Javascript 更改Select元素后未更改Select属性,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有一个表,其中几列包含select元素。在tfoot中,每行有一个输入元素,用于根据select元素中的选定值过滤该行 加载表并使用selects直接筛选列时,它将起作用并筛选表 但是,当在选择元素中进行更改时,过滤器函数不会注意到该值已更改 查看html,我可以看到“selected”属性仍然在加载时选择的选项上。因此,在进行实际更改(在FF和Chrome中都有标识)时,它不会得到更新 但是在jQuery中,搜索所选值(.find(“:selected”))是有效的。所以我想我可以用它来找到

我有一个表,其中几列包含select元素。在tfoot中,每行有一个输入元素,用于根据select元素中的选定值过滤该行

加载表并使用selects直接筛选列时,它将起作用并筛选表

但是,当在选择元素中进行更改时,过滤器函数不会注意到该值已更改

查看html,我可以看到“selected”属性仍然在加载时选择的选项上。因此,在进行实际更改(在FF和Chrome中都有标识)时,它不会得到更新

但是在jQuery中,搜索所选值(
.find(“:selected”)
)是有效的。所以我想我可以用它来找到值,然后将selected属性设置为selected。这就是我试图做到的:

$("select[id^='qu_owner']").live('change', function (e) {
    var owner = $(this).val();
    console.log(owner);
    var ticketid = $(this).attr('id').substr(9);
    $($(this) + " option[value=" + owner + "]").attr("selected", "selected"); //Update: this has been removed
});
但选定的属性仍不会在元素中更新

你知道怎么做吗?我需要的过滤工作,它在选定的attibute查看。无法对select元素进行此类更新吗


更新

好的,根据下面的评论和回答,我知道有更好的方法来做我上面所做的事情。因此,不要使用$(this.find(“:selected”).val();我现在使用$(this.val(););。此外,我确实删除了最后一行,因为我知道不应该尝试设置所选属性

而且,我现在明白了我遇到实际问题的代码是过滤函数。这是针对DataTables的,所以它是一个插件,但这是重要的部分:

aData[i]是实际的表格单元格。因此,它只是文本,但在本例中,它是我的select元素的文本。我认为下面的方向是正确的,但仍然不起作用(检查console.log行旁边的注释):

这是我需要掌握的选定元素的文本。这是应该被过滤的。我该怎么做


更新

为了缩小范围,我创建了一个包含必要内容的JSFIDLE。这是关于如何从所选选项中提取文本的全部内容:


aData[i]=表格单元格。在JSFIDLE中,我使用“sel”作为单元格内容的变量。sel的文本从aData[i]中复制

无需更改
的属性,该属性应包含从服务器下载的元素的原始状态

您的过滤器应检查所选选项的
selected
属性,例如:

.filter(function() {
    return this.selected; // check the boolean property
})
这也是
:selected
伪选择器的工作方式-它检查属性的当前值,而不是属性

请注意,在
元素的
change
处理程序中,您可以使用
this.value
获取当前选定的值

$('select').on('change', function() {
    // current value
    var value = this.value;   

    // text of the currently selected option.
    var text = this.options[this.selectedIndex].text;
}

无需更改
的属性,该属性应该包含从服务器下载的元素的原始状态

您的过滤器应检查所选选项的
selected
属性,例如:

.filter(function() {
    return this.selected; // check the boolean property
})
这也是
:selected
伪选择器的工作方式-它检查属性的当前值,而不是属性

请注意,在
元素的
change
处理程序中,您可以使用
this.value
获取当前选定的值

$('select').on('change', function() {
    // current value
    var value = this.value;   

    // text of the currently selected option.
    var text = this.options[this.selectedIndex].text;
}

那么您正在收听的
更改
选择,然后选择当前选择的选项@ManseUK显然是在试图愚弄其他jQuery函数,使其认为属性已更改,而不是属性已更改。@Alnitak听起来很正常。。。。也许解决这个问题可能是个好主意……@Nicsoft请显示您拥有的任何不起作用的代码-“筛选函数没有注意到值已更改”那么,
$(“[object object]option[value=1234]”有什么作用选择???那么您正在收听的
更改
选择,然后选择当前选择的选项@ManseUK显然是在试图愚弄其他jQuery函数,使其认为属性已更改,而不是属性已更改。@Alnitak听起来很正常。。。。也许解决这个问题可能是个好主意……@Nicsoft请显示您拥有的任何不起作用的代码-“筛选函数没有注意到值已更改”那么,
$(“[object object]option[value=1234]”有什么作用选择???@gdoron是的,我知道,但他还没有实际显示出不起作用的代码。他所展示的只是一个预兆。我在他的代码中更正的所有东西都不是不工作的代码?@gdoron不,该代码(即使不工作)只是为了解决一些他还没有展示给我们的代码中的其他错误。谢谢,我现在改成了这个.value。@gdoron是的,我知道,但他还没有实际展示出不起作用的代码。他所展示的只是一个预兆。我在他的代码中更正的所有东西都不是不起作用的代码?@gdoron不,该代码(即使不起作用)只是为了解决一些他还没有展示给我们的代码中的其他错误。谢谢,我现在改成了这个.value。