【发布时间】:2015-12-15 01:56:48
【问题描述】:
我有一个场景,其中一长串复选框选项通过 PHP/ajax 查询过滤进出。因此,当用户选中一个或多个复选框时,需要创建一个用户选中的复选框的列表。
使用 jQuery 和 .map(),我能够创建选中复选框的初始列表数组。很简单。
var selected_checkboxes;
$( document ).on( 'click', '.checkbox_select', function() {
var checkbox_selector = $( '.checkbox_select:checked' );
selected_checkboxes = checkbox_selector.map( function(i, n) {
return this.value;
}).get();
console.log(selected_checkboxes);
});
所以在这里,我们会说我有一组 10 个复选框(复选框 1 - 10),我检查前 3 个。
控制台输出 ["Checkbox 1", "Checkbox 2", "Checkbox 3"]
问题在您过滤复选框视图时出现。假设您过滤除复选框 3、5 和 6 之外的所有复选框。复选框 3 仍处于选中状态。现在,如果我们选中“复选框 5”,我们的新列表数组将如下所示:["Checkbox 3", "Checkbox 5"]。
我知道它为什么这样做,但所需的结果是建立在运行过滤器之前之前检查的内容的基础上,这应该看起来像 ["Checkbox 1", "Checkbox 2", "Checkbox 3", "Checkbox 5"]。几乎就像您只是添加到初始值数组中一样。
过滤后的复选框不能用 hide/show 隐藏,因为它都是基于 ajax 的查询。
有没有人知道如何让数组像这样工作?任何帮助将不胜感激。
【问题讨论】: