2012-01-29 3 views
0

Я с помощью ползунка скрыть шоу, которое работает для слайд вниз, но не реагирует на слайд вверх, может кто-нибудь объяснить, где я собираюсь неправильно с этим:возникли проблемы с методом slideUp в JQuery

var moreServicesList = $('#more-services-list').hide(); 

$('#more-services').on('click', function(e) { 
    var flag = 0; 
    if(flag === 0) { 
     flag = 1; 
     moreServicesList.slideDown('slow'); 
     $(this).html('Hide'); 
    } else { 
     moreServicesList.slideUp('slow'); 
     $(this).html('Show'); 
     flag = 0;  
    } 
    e.preventDefault(); 
}); 

заранее спасибо Kyle

ответ

1

вы должны двигаться var flag = 0; вне слушателя событий - http://jsfiddle.net/Nnhz8/

var moreServicesList = $('#more-services-list'); 
var flag = 0; 

$('#more-services').on('click', function(e) { 

    if(flag == 0) { 
     moreServicesList.slideDown('slow'); 
     flag = 1; 
     $(this).html('Hide'); 
    } else { 
     moreServicesList.slideUp('slow'); 
     $(this).html('Show'); 
     flag = 0;  
    } 
    e.preventDefault(); 
}); 
1

вы ча п использовать метод переключения для этого, как

$('#more-services').on('toggle', function(e) { 
     $('#more-services-list').slideDown('slow'); 
     $(this).html('Hide'); 
    } function(){ 
     $('#more-services-list').slideUp('slow'); 
     $(this).html('Show'); 
    } 
}); 

вар флаг каждый раз, когда инициализирует 0 в вашем случае

+0

Этот код не работает, работает? – styler

+0

попробуйте сейчас, он будет работать –

1

Вы сбросить свой флаг каждый раз, когда обработчик событий называется:

$('#more-services').on('click', function(e) { 
    var flag = 0; 
} 

Чтобы исправить это, переместите объявление флага перед обработчиком событий:

var flag = 0; 
$('#more-services').on('click', function(e) {} 

Вот, пожалуйста, wo rking пример: http://jsfiddle.net/wMNtT/

1

Потому что вы определяете свой flag внутри функции. Он сбрасывается до нуля каждый раз, когда вызывается функция.