2011-05-19 49 views
0

我使用了一些information here来创建一个切换状态检查,它可以在常规的即时切换中正常工作,但是如何将它应用于具有慢动画的slideToggle?这里是我的代码:jQuery - 使用动画测试slideToggle状态?

$('#elemToggle').click(function() { 
    $("#elem").slideToggle('slow'); 
    if($("#elem").is(":visible")) { 
     $('#elemToggle').addClass('down'); 
     $('#elemToggle').removeClass('up'); 
    } else { 
     $('#elemToggle').addClass('up'); 
     $('#elemToggle').removeClass('down'); 
    } 
    return false; 
}); 

上述不起作用,因为当你点击按钮,技术上ELEM依然可见,只是被倒塌。任何想法的解决办法吗?! :)

感谢

回答

5

做完整的回调支票的slideToggle()

$('#elemToggle').click(function() { 
    $("#elem").slideToggle('slow', function() { 
     if($("#elem").is(":visible")) { 
     $('#elemToggle').addClass('down'); 
     $('#elemToggle').removeClass('up'); 
     } else { 
     $('#elemToggle').addClass('up'); 
     $('#elemToggle').removeClass('down'); 
     } 
    }); 
    return false; 
}); 

这里Documentation

+0

这太棒了,谢谢!我想我会跟着这个,我也喜欢它跟踪国家的方式,所以如果你把垃圾邮件切换按钮它总是会结束在正确的类:) – Nick 2011-05-19 13:53:43

1

toggle之前,您可以只移动测试并倒转。如果元素在toggle之前是可见的,那么您知道它将隐藏起来,而相反。

虽然从它的外观来看,我可能不会使用切换为此,而是使用showhide并自己跟踪状态。

+0

这是一个好主意,谢谢 - 我喜欢通过显示/隐藏来跟踪状态的想法 – Nick 2011-05-19 13:53:07