Javascript 在jquery中使用slideUp方法时遇到问题

Javascript 在jquery中使用slideUp方法时遇到问题,javascript,jquery,Javascript,Jquery,我使用的是一个show hide滑块,它适用于向下滑动,但不适用于向上滑动,有人能解释一下我的错误之处吗: var moreServicesList = $('#more-services-list').hide(); $('#more-services').on('click', function(e) { var flag = 0; if( flag === 0) { flag = 1; moreServicesList.slideDown(

我使用的是一个show hide滑块,它适用于向下滑动,但不适用于向上滑动,有人能解释一下我的错误之处吗:

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

您必须移动
var flag=0事件侦听器外部-


您必须移动
var flag=0事件侦听器外部-


您可以使用切换方法进行类似的操作

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

在您的情况下,var标志每次初始化为0时

您可以使用切换方法

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

var标志每次初始化为0在您的情况下

每次调用事件处理程序时,您都要重置标志:

$('#more-services').on('click', function(e) {
    var flag = 0;
}
要解决此问题,请将标志声明移动到事件处理程序前面:

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

下面是一个工作示例:

每次调用事件处理程序时,您都要重置标志:

$('#more-services').on('click', function(e) {
    var flag = 0;
}
要解决此问题,请将标志声明移动到事件处理程序前面:

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

这里有一个工作示例:

,因为您在函数中定义了
标志。每次调用函数时,它都会重置为零。

因为您在函数中定义了
标志。每次调用函数时,它都重置为零