Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ';其他';语句在应该执行时未执行_Jquery - Fatal编程技术网

Jquery ';其他';语句在应该执行时未执行

Jquery ';其他';语句在应该执行时未执行,jquery,Jquery,我没有语法错误,也没有(我看不到)任何逻辑错误,但是'else'分支没有在它应该执行的时候执行(我添加了一些警报,以检查这一点-但是它看起来是相同的'if'代码执行,即使在不满足条件的情况下,即在第二次单击同一元素时) 我已经尝试设置了两个单独的“if”ONLY语句,以检查元素的唯一两个备用状态-基本上是按钮文本,前面有+或-符号 $('.device').click(function(){ var i = $('.device').index(this); var str = $

我没有语法错误,也没有(我看不到)任何逻辑错误,但是'else'分支没有在它应该执行的时候执行(我添加了一些警报,以检查这一点-但是它看起来是相同的'if'代码执行,即使在不满足条件的情况下,即在第二次单击同一元素时)

我已经尝试设置了两个单独的“if”ONLY语句,以检查元素的唯一两个备用状态-基本上是按钮文本,前面有+或-符号

$('.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");
     }
   }       
  });
$('.device')。单击(函数(){
变量i=$('.device')。索引(此);
var str=$(this.text();
if($('.device').index(this)==i){
如果($(this.html(“+str)){
$(this.html(“+str”);
$('.main').css(“可见性”、“可见”);
警惕(“你好”);
}
否则{
$(this.html(“+str”);
$('.main').css(“可见性”、“隐藏”);
警惕(“再见”);
}
}       
});

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

您可以像这样检查类名

$('.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");
        }
     }
});
$('.device')。单击(函数(){
变量i=$('.device')。索引(此);
var str=$(this.text();
if($('.device').index(this)==i){
if($(this).hasClass(“fa plus”){
$(this.html(“+str”);
$('.main').css(“可见性”、“可见”);
警惕(“你好”);
} 
否则{
$(this.html(“+str”);
$('.main').css(“可见性”、“隐藏”);
警惕(“再见”);
}
}
});

if($(this.html(“+str))条件将始终为真。你没有在那里检查任何东西。。就像你在检查函数是否执行..我是说
$('.device')。单击(function(){('.fas',this)。toggleClass('fa-plus-fa-minus');})
如果您提供了html,您将更清楚地知道您要做什么。谢谢Kevin B,这看起来是一种更好的速记方法。我现在就试试。我不能遵循“回调”的逻辑,因为它并不总是正确的——它会在第一次点击时变为“fas fa减号”…为Kevin B做了一顿款待。非常感谢。非常感谢“kmgt”(用JQuery重新认识自己-很少有“初期麻烦”)我的荣幸。我不知道为什么会有人投反对票。