问题 slideToggle()可以检测SlideUp或SlideDown吗?


我知道 hover() 有默认设置 handIn 和 handOut,但无论如何我能检测到 slideUp 和 SlideDown 内 SlideToggle

有这样的代码:

$("#divName").slideToggle(function(){//when slideUp, do something},
                          function(){//when slideDown, do something});

我尝试了这段代码,但没有运气,你们认为这有时会让事情变得更容易吗?


1289
2017-10-29 11:39


起源

slideToggle 只需要持续时间和完成回调。 API的设计不符合您的预期。但是你可以使用它来实现这个效果 toggle,试试吧 - Ravi Hamsa
@RaviHamsa toggle()的工作方式类似于slideToggle(),但与动画相似 - Twocode
我使用的切换版本已从JQuery中删除,这里有更多信息 stackoverflow.com/questions/14338078/... - Ravi Hamsa


答案:


slideToggle 默认情况下不允许这样做,但编写自己的版本会很容易。像这样的东西可以作为替代处理程序:

$('#divTrigger').click(function () { // Or bind to any other event you like, or call manually

    var $t = $('#divToSlide');

    if ($t.is(':visible')) {
        $t.slideUp();
        // Other stuff to do on slideUp
    } else {
        $t.slideDown();
        // Other stuff to down on slideDown
    }
});

同样,如果你想在slideUp或slideDown之后发生动作,你可以将它们放入回调中,就像这样 $.slideUp(300, function() {// Callback here});


10
2017-10-29 11:49



好的答案....一秒钟回到你身边 - Twocode
您可以将var $ t = $(this)替换为您实际想要操作的div的其他选择器,例如。 var $ t = $('#divToSlide');我会更新答案。 - Owen C. Jones
这是另一个问题,当我需要单击一个按钮并使用slideToggle()时,它不会直接连接到目标div,$(“#button”)。click(function(){$(“divName”)。slideToggle ();}),在这种情况下我怎么能达到同样的效果呢?似乎是:可见没有帮助,制作JSFiddle,sec ...... - Twocode
它现在有效,谢谢你的更换。但仍然看中他们可以在源代码中构建函数:P - Twocode
您可以进行扩展,或者拆分仓库并添加代码?你永远不会知道,Resig和他的团队可能会把它拿起并与之一起运行;) - Owen C. Jones


如果您检查幻灯片的状态并且比功能更好怎么办?

$("#divName").slideToggle(function(){
    var check=$(this).is(":hidden");

    if(check == true)
    {
     //do something
    }
});

4
2017-10-29 11:46





你总是可以保留一个标志,因为纯jQuery中没有方法。假设 #divName 不可见,

var toggle_flag = 0;

$('#divName').click(function () {

   $('#myelement').slideToggle();

   if(toggle_flag==0){
      //code for slide down
      toggle_flag=1;
   }else{
      //code for slide up
      toggle_flag=0;
   }

});

如果 #divName 已经可以看到你可以发起 var toggle_flag=1; 并使用此代码。


0
2018-04-28 12:12



缺少开放式支架 - Twocode
@Twocode thanx。编辑。 - Janaka Dombawela