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;
и использовать этот код.