jquery addclass如果有一些li的类

时间:2011-06-20 21:04:19

标签: javascript jquery if-statement addclass

我正在尝试向一个范围添加一个类,如果一组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对抗它但没有太多运气

由于

4 个答案:

答案 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");
}