我似乎无法弄清楚我在使用以下代码时遇到了什么问题:
$('#side_categories #sourcestoggle ul#side_categories_prog .showonly').click(function () {
var cattest2 = $(this).data('dealcat'); //get the category from the clicked button
$('#listings .deal:not(:has(.deal[data-dealcat*="' +cattest2+ '"]))').addClass('filtered');
$('#sourcestoggle ul#side_categories_prog li .check_box input:not([data-dealcat*="' +cattest2+ '"]').removeAttr('checked');
$('#listings .deal[data-dealcat*="' +cattest2+ '"]').removeClass('filtered');
$('#dealcount .counter #showingval').html(parseInt($('#listings .deal:visible').size()));
});
它只能显示基于data-dealcat的所选类别,但它也取消选中所有复选框,我似乎无法弄清楚如何保持当前复选框被选中。由于我是jquery的新手(以及一般的编码),我很确定代码相当邋but但它仍然适用于大多数情况,只是复选框上有“唯一”链接不会保持检查
提前谢谢大家!
编辑:上面的代码现在保留了第一个复选框,但是当你点击其他代码时它没有做任何事情。
答案 0 :(得分:1)
试试这个
$('#side_categories #sourcestoggle ul#side_categories_prog .showonly').click(function () {
var cattest2 = $(this).data('dealcat'); //get the category from the clicked button
var checked = $('#sourcestoggle ul#side_categories_prog li .check_box input.deal[data-dealcat*="' +cattest2+ '"]').is(':checked');
$('#listings .deal:not(:has(.deal[data-dealcat*="' +cattest2+ '"]))').addClass('filtered');
$('#sourcestoggle ul#side_categories_prog li .check_box input:not(.deal[data-dealcat*="' +cattest2+ '"])').removeAttr('checked');
$('#sourcestoggle ul#side_categories_prog li .check_box input.deal[data-dealcat*="' +cattest2+ '"]').attr('checked', checked);
$('#listings .deal[data-dealcat*="' +cattest2+ '"]').removeClass('filtered');
$('#dealcount .counter #showingval').html(parseInt($('#listings .deal:visible').size()));
});