web-dev-qa-db-ja.com

slideToggle()はSlideUpまたはSlideDownを検出できますか?

hover()のデフォルト設定はhandInhandOutですが、とにかくslideUpSlideDownSlideToggle内で検出できますか?

このようなコードを持っている:

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

私はこのコードを試しましたが、運が悪かったのですが、これで少し楽になることがあると思いますか?

11
Venzentx

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
Owen C. Jones

スライドの状態を確認して、機能よりも作成するとどうなりますか?

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

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

純粋な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