我有一个循环中的复选框,如果该复选框是正确答案,则它将添加类correct-answer
:
<input class="correct <?php if($row['correct'] == "Yes") { ?>correct-answer<?php } ?>" data-progress="<?php echo $counter; ?>" type="checkbox" name="answer[]" value="<?php echo $row['answer']; ?>" />
使用Jquery,如何检测复选框是否已选中以及复选框是否包含类correct-answer
?我已经设法检测它是否被检查了,但是我想通过添加hasClass('.correct-answer')
可以在运行if语句之前检测到这两个东西?
$('.correct-answer').change(function(){
var item = $(this).data('progress');
if($(this).is(":checked").hasClass('.correct-answer')) {
$('.quiz-progress-circle[data-progress="' + item + '"]').removeClass("progress-incorrect");
$('.quiz-progress-circle[data-progress="' + item + '"]').addClass("progress-correct");
} else {
$('.quiz-progress-circle[data-progress="' + item + '"]').removeClass("progress-correct");
$('.quiz-progress-circle[data-progress="' + item + '"]').addClass("progress-incorrect");
}
});
我要去哪里错了?
答案 0 :(得分:2)
下面的行将不执行您想要的操作:
if ($(this).is(":checked").hasClass('.correct-answer')) {...}
这里的问题是is(':checked')
返回一个布尔值,然后您试图对其执行hasClass('.correct-answer')
,这显然不起作用。
正确的方法是在if
语句中具有两个不同的条件:
if ($(this).is(":checked") && $(this).hasClass('correct-answer')) {...}
答案 1 :(得分:0)
从hasclass中删除该点并添加一个“和”:
if($(this).is(":checked") && $(this).hasClass('correct-answer')) {...
答案 2 :(得分:0)
只需使用本机DOM API添加替代项:
if (this.checked && this.classList.contains('correct-answer'))
或更短
if (this.checked && this.matches('.correct-answer'))