2011-11-23 51 views
2

我使用下面的代码来显示和隐藏名为“地图”的div 当点击带有'goo'id的链接时,地图显示使用.slideDown,但是当链接被再次点击,SUPPOSE使用.slideUp来隐藏地图,但没有任何反应。jquery.slideup函数不会隐藏div

这里是JavaScript:

$('#goo').live('click',function() { 
    if ($("#map").css('visibility','hidden')){ 
    $('#map').slideDown('slow'); 
    $("#map").css('visibility','visible'); 
    $("#map").css('position','relative'); 
    } else { 
    $('#map').slideUp('slow'); 
    } 
    return false; 
    }); 

如果任何人有任何想法,那么div会不会滑动,让我知道!

回答

0

回答你的问题,为什么它不工作...如果情况需要改变你的...否则其他一切都很好....你需要检查

if($("#map").css('visibility') == 'visible') 

否则其良好的

查看同样的小提琴http://jsfiddle.net/xsFRJ/

1

jQuery的.slideUp().slideDown()函数不影响CSS visibility属性。您应该使用display: none;而不是visibility: hidden以更好地符合您尝试使用的功能。

下面是使用display: none;的的jsfiddle:http://jsfiddle.net/jasper/2QWEM/1/

如果你想你的元素仍然卷取空间,同时它是无形的,那么我建议使用opacity: 0;和动画元素的不透明度:

$('#goo').live('click',function() { 
    if ($("#map").css('opacity') == 0){ 
    $('#map').animate({opacity : 1}, 500); 
    } else { 
    $('#map').animate({opacity : 0}, 500); 
    } 
    return false; 
    }); 

Google文件.slideUp()http://api.jquery.com/slideup

在一个侧面说明,您使用的是相同的选择很多时候过度,你可以链函数调用并缓存您的选择器以提高性能。下面是使用你的代码的例子:

$('#goo').live('click',function() { 
    var $map = $('#map'); 
    if ($map.css('visibility','hidden')){ 
     $map.slideDown('slow').css({ 
      visibility : 'visible', 
      position : 'relative' 
     } 
    } else { 
     $map.slideUp('slow'); 
    } 
    return false; 
});