为什么检查.is(':可见')从未进行过评估

时间:2015-02-03 16:34:51

标签: jquery

我想知道为什么在这个特定的功能中永远不会评估检查可见性。它在其他功能中工作正常。我明白.is(':visible')是一个布尔值(true / false)如果我有下面的代码,它可以正常工作

if($("#complete").is(':hidden')) {  
   $("#complete").show();
   $("#img5").hide();

 }  


 else if($("#complete").is(':visible')) { 
    $("#complete").hide();
    $("#img5").show();



   }

如果我在检查隐藏之后添加更多功能,并且在检查可见性之前,则永远不会评估此元素的可见性检查。

    if($("#complete").is(':hidden')) {  
       $("#complete").show();
       $("#img5").hide();
       $("#continue").hide();
       $("#addtocart").show(); 


     }  


    if($( ".g_card" ).on('click', function() {
         $('#addon_1').addClass('baddon_1add'); 
         $("#gift_occasion").toggle(); 

     })); 

       $("#g_minus").on('click', function(e){
         e.stopPropagation();        
         $('#addon_1').removeClass('baddon_1add').addClass('.baddon_1');
         }); 

else if($("#complete").is(':visible')) { 
        $("#complete").hide();
        $("#img5").show();
        $("#continue").show();
        $("#addtocart").hide(); 


   }  /*This if never evaluated after adding other conditions*/                                                                  Thanking You In Advance          

2 个答案:

答案 0 :(得分:0)

更容易看到你是否修复了你的格式,你会注意到第二个if用分号完成;如果属于它,则别的没有。

if($("#complete").is(':hidden')) {  
   $("#complete").show();
   $("#img5").hide();
   $("#continue").hide();
   $("#addtocart").show(); 
 }  


if($( ".g_card" ).on('click', function() {
     $('#addon_1').addClass('baddon_1add'); 
     $("#gift_occasion").toggle(); 
     })
 );  // End If

// Always runs
   $("#g_minus").on('click', function(e){
     e.stopPropagation();        
     $('#addon_1').removeClass('baddon_1add').addClass('.baddon_1');
     }); 

// else to what if?? no if's here
else if($("#complete").is(':visible')) { 
    $("#complete").hide();
    $("#img5").show();
    $("#continue").show();
    $("#addtocart").hide(); 


}

编辑:mattytommo的解决方案比我的好

答案 1 :(得分:0)

我找到了一个解决我的问题的解决方案,这些解决方案适用于我正在努力实现的目标。正如我所说,我有一个手风琴类型的应用程序,一次只允许一个元素打开。应用程序检查元素是否可见,然后才允许打开另一个元素。如果元素是可见的,代码将隐藏它。 我遇到的问题是,一旦元素被检查以查看是否隐藏在特定函数中,并且是否必须使其可见,因为这将是您可以看到兄弟姐妹并且能够对它们进行点击的唯一方式要添加和删除允许在加号和减号按钮上添加边框和背景颜色的类,它会删除颜色边框和背景颜色,将其设置回原始颜色。 如果可见,你无法检查可见性和隐藏的东西,因为看到兄弟姐妹的元素必须是可见的但我仍然需要检查能见度,然后才能在手风琴上打开另一个元素。

    if($( ".g_card" ).on('click', function(e) { 
        e.stopPropagation();   
       $('#addon_1').addClass('baddon_1add'); 
       $("#gift_occasion").toggle();  
     })); 

    $("#g_minus").on('click', function(e){
         e.stopPropagation();        
   $('#addon_1').removeClass('baddon_1add').addClass('.baddon_1');
         }); 

 if($("#complete").is(':hidden')) {  
    $("#complete").show();
    $("#img5").hide();
    $("#continue").hide();
    $("#addtocart").show(); 
 }  

  else if($('#complete').is(':visible')) { 
          $("#complete").hide();
          $("#img5").show();
          $("#continue").show();
          $("#addtocart").hide(); 


  }