所以基本上我要做的就是在选中复选框并且是否有特定类时,会显示一系列元素。但只有选中复选框。
以下是单个复选框和类的代码:
$('#arcuate').change(function() {
if ($('#arcuate').checked == true && $('.card').hasClass('arcuate') ) {
$('.card').addClass('reveal')
} else {
$('.card').removeClass('reveal')
}
});
答案 0 :(得分:2)
jQuery objects没有checked
财产; DOM复选框元素可以。所以要么
if ($("#arcuate").prop("checked") && ...
或
if ($("#arcuate")[0].checked && ...
或
if (document.getElementById("arcuate").checked && ...
我会使用第一个,如果没有undefined
元素将返回#arcuate
(而其他两个将抛出错误)。
附注:
$('.card').hasClass(...)
只会检查匹配.card
的第一个元素是否包含该类,但$('.card').addClass(...)
和$('.card').removeClass(...)
会添加/从所有匹配元素中删除该类。 (也许这就是你想要的,但我想我会把它标记出来。)
== true
在条件下永远不需要。
toggleClass
可以使代码更简洁:
$('#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'));
});
});