我有一堆选择框,用于筛选一个大型复杂表,该表的内容通过一系列ajax查询加载。在加载表时,不仅要加载表,还要更新复选框筛选器,以反映当前可用的选项。由于在这一点上,使用可能已经选择了筛选表的选项,所以我有一些代码来保留当前选定的值:
if($('#CourseFilter').length) {
selected = $('#CourseFilter').val();
$('#CourseFilter').replaceWith(sel);
if(selected != '') $('#CourseFilter option[value="'+escape(selected)+'"]').prop('selected', true);
} else {
sel.appendTo('#filters'); // Adding fitler for first time.
}
这对于大多数过滤器都是有效的,但是一对夫妇(如#CourseFilter
)会将其重置为默认设置,而不是记住当前的选择。它认为这是因为这些列表中的值包含特殊字符,如-
、/
和\
。我试过使用escape
,但它仍然不起作用。有什么想法吗?
发布于 2017-07-10 05:01:38
您可能正在寻找的内容:
您应该能够只设置sel
的值,而不是找到正确的<option>
并手动选择:
sel.val(selected);
如果您想找到正确的<option>
**:**,
通过使用<option>
对正确的jQuery.filter进行筛选,可以完全避免转义问题。
$('#CourseFilter option').filter(function() {
return $(this).val() === selected;
}).prop('selected', true);
发布于 2017-07-10 05:04:41
不需要查找每个<option>
,因为val()
既是getter又是setter。
只需使用val()
设置新<select>
的值
if($('#CourseFilter').length) {
selected = $('#CourseFilter').val();
$('#CourseFilter').replaceWith(sel);
sel.val(selected);
} else {
sel.appendTo('#filters'); // Adding fitler for first time.
}
https://stackoverflow.com/questions/45012708
复制相似问题