【问题标题】:Add a function to slidetoggle just when open添加一个功能以在打开时进行滑动切换
【发布时间】:2013-09-18 12:01:13
【问题描述】:
您好,我只是制作了一个在 Google 上显示地图的 div,您可以在其中设置坐标等,无论如何,第一个问题是在设置高度动画时,里面的地图在大小上存在这个问题:
how to deal with google map inside of a hidden div (Updated picture)
我修复它就像在我的 slideToggle 中调用 initialize(); 的第一个答案一样修复了大小问题。问题是 initialize();与 slideToggle 花费相同的时间,所以我失去了高度动画,它就消失了,
有没有在滑动切换打开 div 时触发initialize();?
<script>
$('.dropdownmap').click(function(){
$('#mapDisplayWrap').slideToggle();
initialize();
})
</script>
【问题讨论】:
标签:
javascript
jquery
slidetoggle
【解决方案1】:
添加initialize作为slideToggle回调:
$('#mapDisplayWrap').slideToggle(initialize);
【解决方案2】:
是的,slideToggle 在动画完成时接受函数回调。
.slideToggle([持续时间] [,完成])
试试这个:
$('.dropdownmap').click(function(){
$('#mapDisplayWrap').slideToggle(400,function(){initialize();});
})
如果您希望它在切换打开时运行,请使用:
$('.dropdownmap').click(function () {
$('#mapDisplayWrap').slideToggle(400, function () {
if ($(this).is(":visible")) {
initialize();
}
});
});
【解决方案3】:
无论如何都可以触发 initialize();只是当slidetoggle 打开div?
您需要使用动画回调来检查元素是否可见(刚刚打开),如果是则执行initialize。
$('.dropdownmap').click(function(){
$('#mapDisplayWrap').slideToggle(function(){
if($(this).is(':visible'))
initialize();
});
});