【发布时间】:2016-09-09 11:13:33
【问题描述】:
我有这个简单的功能:
$('.tools-dropdown-launch').click(function(e) {
e.preventDefault();
$('.tools-dropdown-content').toggle(function () {
fixPanelHeight();
});
});
应该切换另一个 div 的可见性,但 没有动画。相反,我有一个类似的 slideToggle() 类型的动画。触发的函数如下:
function fixPanelHeight() {
var maxPanelHeight = 0;
$(".inner-menu-panel-containter").children(".menu-panel").each(function(){
var element = $(this);
element.css("height", "auto");
if (element.height() > maxPanelHeight) {
maxPanelHeight = element.height();
}
})
if (maxPanelHeight > 0) {
$(".inner-menu-panel-containter").children(".menu-panel").height(maxPanelHeight);
}
}
我尝试将第一个函数更改为
$('.tools-dropdown-launch').click(function(e) {
e.preventDefault();
$('.tools-dropdown-content').toggle();
});
它按预期工作:我没有动画但该功能(当然)没有触发。
为什么会这样?
css 中没有高度过渡,js 文件中的任何地方都没有slideToggle()。
这个问题解决了
$('.tools-dropdown-content').slideToggle(0 , function () {
fixPanelHeight();
});
但我更喜欢比这个 quickfix 更好的东西。
【问题讨论】:
-
将完整的回调函数传递给 jq toggle() 方法使用默认持续时间(400 毫秒)隐式调用动画。现在,尚不清楚您的预期行为是什么?只使用
toggle()有什么问题? -
我希望没有动画,因为我在函数中使用了 toggle() 而不是 slideToggle()。有没有办法避免这种情况.. 我需要切换显示:无/没有特殊效果、过渡或动画的块
-
但我仍然不确定你为什么不能只使用
.toggle()?它不会使用任何动画。因为它是同步的,所以你可以使用:$('.tools-dropdown-content').toggle(); fixPanelHeight(); -
不会
toggle(0, function(){})工作还是我错过了什么? -
@A.Wolff i am using toggle() :) 这就是为什么它的动画让我感到惊讶
标签: jquery jquery-animate toggle slidetoggle