jquery checkall不影响已检查的元素

时间:2011-09-16 00:04:57

标签: jquery checkbox

我有一些复选框,当取消选中隐藏未经检查的来源/类别时,会向具有特定数据属性(LI和复选框都有)的LI添加“过滤”类。我在上面添加了一个checkall按钮,它可以设置所有复选框以进行检查,但是,它对我直接选中/取消选中框时隐藏的元素没有影响。是否可以将1 div的显示绑定到另一个的复选框的值?

例如,在加载页面时,检查是否选中了具有相同数据类别的复选框,然后显示内容?也许我应该用php做到这一点?

用于添加/删除已过滤类onclick的复选框代码:

$("#side_categories #sourcestoggle ul#side_categories_prog li .check_box input").click(function () {
    var dealcat = $(this).data('dealcat'); //get the category from the clicked button
    var deallistcount = $('#deals .deal:visible').size();
    if (deallistcount < 0) {
        $('#deals .noresults').show();
    } else {
        $('#deals .noresults').hide();
    }
    if ($('#' +dealcat+ ':checked').val() !==undefined) {
        $('#deals .deal[data-dealcat*="' +dealcat+ '"]').removeClass('filtered');
        $('#dealcount .counter #showingval').html(parseInt($('#deals .deal:visible').size()));
    } else {
        $('#deals .deal[data-dealcat*="' +dealcat+ '"]').addClass('filtered');
        $('#dealcount .counter #showingval').html(parseInt($('#deals .deal:visible').size()));
        var deallistcount = $('#deals .deal:visible').size();
        if (deallistcount < 1) {
            $('#deals .noresults').show();
        } else {
            $('#deals .noresults').hide();
        }
    }
});

我的checkall代码:

$('#side_categories #sourcestoggle .sources #sources_controls .sources_checkall').click(function(){
    $('#side_categories #sourcestoggle ul#side_categories_prog li .check_box input:checkbox').attr('checked','checked');
});

我理解使用checkall / uncheckall最简单的方法就是删除从#deals过滤的所有类,以及反对,但我正在尝试查看是否有“更智能”的方法。< / p>

列表的html ul / li:

  <ul id="deals">
    <li data-date="26800" data-discount="50" data-value="400" data-price="200" id="9752" data-dealcat="Provider" data-category="Category" class="deal">
      blah blah blah
    </li>
  </ul>

categories / checkbox html:

  <ul id='side_categories_prog'>
  <li class='programname'>
  <div class='check_box'>
  <input type='checkbox' value='2' name='sources1' id='programname' checked='checked' data-dealcat='programname'>
  </div>
  <label for='progname'>programname</label>";
  </li>
  </ul>

复选框的数据用php填写,并通过jquery控制#deals .deal,它们也是动态填充的。

0 个答案:

没有答案