Ваш текущий код не будет иметь двух проблем: вы запускаете
if($("li").hasClass("complete")){
$("#done").addClass("active");
};
сразу после привязки обработчика click()
, а не после того, как кнопка была фактически нажата.Кроме того, вы не учитываете количество выполненных завершенных операций li
.
Один из вариантов - подсчет количества li
с завершенным классом при каждой обработке нажатия.:
$(function(){
$("li").click(function(){
$(this).addClass("complete");
if ($("li.complete").length >= 4) {
$("#done").addClass("active");
}
});
});
Вы также можете держать счетчик на ходу ...
$(function(){
var activeCount = 0;
$("li").click(function(){
$(this).addClass("complete");
activeCount = activeCount + 1;
if (activeCount >= 4) {
$("#done").addClass("active");
}
});
});
, но если вы когда-нибудь захотите отменить выбор элементов, это сделает ваш код болеесложнее.