jQuery - 用动画测试slideToggle状态?

时间:2011-05-19 13:35:32

标签: jquery toggle

我已经使用了information here中的一些来创建切换状态检查,这可以通过常规即时切换正常工作,但是如何将其应用于具有慢动画的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仍然可见并且正在折叠。有任何解决方法的想法吗?! :)

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以在toggle之前移动测试并将其反转。如果元素在toggle之前可见,那么您知道它将被隐藏,而相反的情况则相同。

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