我正在尝试向一个范围添加一个类,如果一组li有一个特定的类应用于它们。
li。完整
利
li。完整
利
li。完成
等...
span#done
如果其中4个人的班级“完整”,我试图在跨度中添加一个“主动”类 我已经尝试了以下内容,我可以使click事件起作用而不是if语句,这是否可行或有效?
$(function(){
$("li").click(function(){
$(this).addClass("complete");
});
if($("li").hasClass("complete")){
$("#done").addClass("active");
};
});
我一直在寻找一种方法来计算li.complete与dom然后addClass对抗它但没有太多运气
由于
答案 0 :(得分:1)
您当前的代码不会有两个问题:您正在运行
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");
}
});
});
但如果您希望能够取消选择项目,则会使您的代码更加复杂。
答案 1 :(得分:0)
试试这个:
$(function(){
$("li").click(function(){
$(this).addClass("complete");
if($("li.complete").length >= 4){
$("#done").addClass("active");
};
});
});
答案 2 :(得分:0)
如果我已正确理解您的问题,并且您希望将一个类应用于元素,如果4个li
元素都具有特定类,则可以执行以下操作:
if($("li.complete").length == 4) {
$("#done").addClass("active");
}
查看其工作示例here。
答案 3 :(得分:0)
您可以计算具有完整选择器的所有li
元素,并查看计数是否至少为4:
if($("li.complete").size() > 3) {
$("#done").addClass("active");
}