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