'else'语句在应执行的时间不执行

时间:2019-09-03 21:54:55

标签: jquery

我没有语法错误,也没有任何逻辑错误,但是'else'分支在应有的时候没有执行(我已经添加了一些警报来进行检查-但它看起来一样' '即使不满足条件,即单击同一元素的第二次单击,代码也会执行)

我尝试设置2个单独的'if'语句,以检查元素的仅2个替代状态-基本上是按钮文本,其前面带有+或-号...

$('.device').click(function(){   
var i = $('.device').index(this);    
var str = $(this).text();            
   if($('.device').index(this) === i){         
     if($(this).html("<i class='fas fa-plus'></i>                " + str)){          
       $(this).html("<i class='fas fa-minus'></i>                " + str);
       $('.main').css("visibility", "visible");
       alert("HELLO");
     }
     else{         
        $(this).html("<i class='fas fa-plus'></i>                " + str);
        $('.main').css("visibility", "hidden");
        alert("GOODBYE");
     }
   }       
  });

我希望'.main'类在隐藏和可见之间交替,加号更改为减号,反之亦然,但它仅在第一次工作,即加减为负,隐藏为可见元素(每次都会在警报窗口中显示HELLO-表示它仅在执行if分支)

1 个答案:

答案 0 :(得分:-1)

您可以像这样检查班级名称

$('.device').click(function(){ 
    var i = $('.device').index(this); 
    var str = $(this).text(); 
    if($('.device').index(this) === i){ 
        if($(this).hasClass("fa-plus")){ 
            $(this).html("<i class='fas fa-minus'></i> " + str); 
            $('.main').css("visibility", "visible"); 
            alert("HELLO"); 
        } 
        else{ 
            $(this).html("<i class='fas fa-plus'></i> " + str); 
            $('.main').css("visibility", "hidden");
            alert("GOODBYE");
        }
     }
});