在我正在进行的项目中,我正在使用单选按钮和AJAX来更改自定义WordPress模板页面上显示的帖子。它工作得很好,但是,客户希望它是复选框而不是无线电输入,这样每次用户选择一个新类别时,它都会添加到正在显示的帖子而不是替换它。
例如:目前,如果您点击category1,则会显示category1帖子。单击category2,category2帖子替换category1帖子。如果同时选中了两个复选框,则客户端会显示“类别1”和“类别2”。
这是我目前的JS:
jQuery(document).ready(function ($) {
// AJAX Post Filter scripts
var $checkbox = $("#filter input:checkbox");
var $checked = $("#filter input:checkbox:checked");
var $unchecked = $("#filter input:checkbox:not(:checked)");
$checkbox.change(function () {
if ($checked) {
var catID = $(this).val();
$.ajax({
type: 'POST',
url: afp_vars.afp_ajax_url,
data: {
"action": "load-filter",
category__in: catID
},
success: function (response) {
$(".filter-section").empty().html(response);
return false;
console.log('success!');
}
});
console.log(catID);
}
});
});
我很确定我需要使用我的变量.map()
对catID
做一些事情,正如我在其他一些帖子中看到的那样,但我找不到有效的解决方案对我来说非常合适。
编辑:我意识到我需要澄清我有尝试的内容。
我使用了以下代码:
var catID = $(this).map(function () {
return $(this).val();
}).get();
但它只是用新的复选框值替换变量值。我需要添加值而不删除已经检查的值。然后,如果未选中复选框,我需要从数组中删除该值。