2012-01-04 59 views
0

我有一些代码使用切换来显示和隐藏div,但现在我想根据它处于哪种状态来做东西。我不知道如何去做这个。我想我需要将切换出来分开显示和隐藏。jQuery show hide div,替换切换但不知道如何

我已经得到了这段代码,在它下面有一些伪代码来表明我正在尝试做什么。

$(function() { 
    $('.collapse_btn').click(function() { 
     $("#shot_btn").attr("src","/images/contract_icon.gif");//replaces src in existing image with animated version. To be done when hide() runs 
     $('.imgbox').toggle(400); 
     $('#shot_h3').addClass("border_radius"); 
     $("#shot_btn").attr("src","/images/expand_icon.gif");//replaces contract_icon.gif. To be done when show() runs 
    }); 
}); 


$(function() { 
    $('.collapse_btn').click(function() { 
     if(currently visible){ 
      $("#shot_btn").attr("src","/images/contract_icon.gif");//replaces src in existing image with animated version. To be done when hide() runs 
      $('.imgbox').hide(400); 
     } 
     else{ 
      $('#shot_h3').removeClass("border_radius"); 
      $("#shot_btn").attr("src","/images/expand_icon.gif");//replaces contract_icon.gif. To be done when show() runs 
      $('.imgbox').show(400); 
    }); 
}); 

感谢您提供任何帮助。

回答

3
if ($('.imgbox').is(':visible')) { 
    //hide 
} 
else { 
    //show 
} 

所以你的代码:

$('.collapse_btn').click(function() { 
    if ($('.imgbox').is(':visible')) { 
     $("#shot_btn").attr("src","/images/contract_icon.gif"); 
     $('.imgbox').hide(400); 
    } 
    else { 
     $('#shot_h3').removeClass("border_radius"); 
     $("#shot_btn").attr("src","/images/expand_icon.gif"); 
     $('.imgbox').show(400); 
    } 
}); 
+0

+1的可读性。或者,您也可以直接阅读'display'属性。 ['.hide()'](http://api.jquery.com/hide/)和['.toggle()'](http://api.jquery.com/toggle/)都设置'display'在隐藏一个元素(即使是动画)后隐藏到“none”。 – PPvG 2012-01-04 21:24:47

+0

嗨,我用这个作为最终代码,谢谢。 – 2012-01-04 21:46:39