jquery不是带有.data的选择器

时间:2011-09-06 21:11:49

标签: jquery jquery-selectors

我似乎无法弄清楚我在使用以下代码时遇到了什么问题:

            $('#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但它仍然适用于大多数情况,只是复选框上有“唯一”链接不会保持检查

提前谢谢大家!

编辑:上面的代码现在保留了第一个复选框,但是当你点击其他代码时它没有做任何事情。

1 个答案:

答案 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()));
        });