SlideToggle() может обнаруживать SlideUp или SlideDown?

Я знаю, что hover() имеет настройку по умолчанию для handIn и handOut, но все равно я мог обнаружить slideUp и SlideDown внутри SlideToggle?

Введите код:

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

Я пробовал этот код, но вам не повезло, вы, ребята, думаете, что иногда это может немного упростить?

Ответ 1

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
    }
});

Точно так же, если вы хотите, чтобы действия выполнялись после слайдов или slideDown, вы могли бы поместить их в обратный вызов, как этот $.slideUp(300, function() {// Callback here});.

Ответ 2

Что делать, если вы проверяете состояние слайда и выполняете функцию?

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

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

Ответ 3

Вы всегда можете сохранить флаг, поскольку в чистом 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; и использовать этот код.