使用&& jquery中的运算符,同时检查复选框是否"检查"

时间:2017-11-22 07:44:26

标签: jquery checkbox

所以基本上我要做的就是在选中复选框并且是否有特定类时,会显示一系列元素。但只有选中复选框。

以下是单个复选框和类的代码:

$('#arcuate').change(function() {
  if ($('#arcuate').checked == true && $('.card').hasClass('arcuate') ) {
    $('.card').addClass('reveal')
  } else {
    $('.card').removeClass('reveal')
  }
});

1 个答案:

答案 0 :(得分:2)

jQuery objects没有checked财产; DOM复选框元素可以。所以要么

if ($("#arcuate").prop("checked") && ...

if ($("#arcuate")[0].checked && ...

if (document.getElementById("arcuate").checked && ...

我会使用第一个,如果没有undefined元素将返回#arcuate(而其他两个将抛出错误)。

附注:

  1. $('.card').hasClass(...)只会检查匹配.card第一个元素是否包含该类,但$('.card').addClass(...)$('.card').removeClass(...)会添加/从所有匹配元素中删除该类。 (也许这就是你想要的,但我想我会把它标记出来。)

  2. == true在条件下永远不需要。

  3. toggleClass可以使代码更简洁:

  4. $('#arcuate').change(function() {
        var cards = $('.card');
        cards.toggleClass("reveal", $('#arcuate').prop("checked") && cards.hasClass('arcuate'));
    });
    

    或者,如果您想单独切换每张卡片:

    $('#arcuate').change(function() {
        var checked = $('#arcuate').prop("checked");
        $('.card').each(function() {
            var $this = $(this);
            $this.toggleClass("reveal", checked && $this.hasClass('arcuate'));
        });
    });