Javascript slideUp/slideDown JS的问题

Javascript slideUp/slideDown JS的问题,javascript,jquery,slide,Javascript,Jquery,Slide,我一直在这里使用此代码: $(document).ready(function(){ $('a[href*=#]').bind('click', function(){ var $href = $(this).attr('href') $('html,body').animate({scrollTop: $($(this).attr('href')).offset().top}, 1200, 'easeInOutExpo'); return false; }); $(

我一直在这里使用此代码:

$(document).ready(function(){

$('a[href*=#]').bind('click', function(){
    var $href = $(this).attr('href')
    $('html,body').animate({scrollTop: $($(this).attr('href')).offset().top}, 1200, 'easeInOutExpo');
    return false;
});

$(".category-slider-trigger").click(function(e){
    e.preventDefault;
    $this = $(this);
    var isVisible = $this.next().is(":visible");

    $(".category-slider-content").stop(true,true).slideDown('slow');
    $(".trigger-symbol").attr('src', '/images/plus.png');

    if (!isVisible) {
        $this.find(".trigger-symbol").attr('src', '/images/minus.png');
        $this.next().stop(true,true).slideUp('slow');
    }

    return false;
}); 
}))

在此html上:

<div class="category-slider-content">
<div class="grid_1">&nbsp;</div>
<div class="grid_10 category-filter-area">
    <a class="stock-latest-additions" href="/stock/latest-additions">Latest additions</a>
    <?
    foreach ($stock_categories as $cat) {
        echo("<h2 class=\"stock-category-title\">".$cat['title'].":</h2>");
        echo("<ul class=\"stock-categories-list\">");
        foreach ($cat['sub_categories'] as $sub_cat) {
            echo("<li><a href=\"/stock/".$util->formatCategoryParam($sub_cat['title'])."\">".$sub_cat['title']."</a></li>");
        }
        echo("</ul>");
        echo("<div class=\"clear\"></div>");
    }
    ?>
</div>
<div class="grid_1">&nbsp;</div>

显示/隐藏类别

但我的功能有问题。单击链接时,类别会从顶部显示并向下滑动,但不会向上滑动

我在这里设置了一个JSFIDLE

有什么建议吗

谢谢,
R

工作演示

好的API:

如果您只使用slideToggle进行显示和隐藏,则可以避免完整的isVisible逻辑

这会有帮助的。B-)

代码已更改

$(".category-slider-content").stop(true,true).slideToggle('slow');
完整代码

$(document).ready(function() {

    $('a[href*=#]').bind('click', function() {
        var $href = $(this).attr('href')
        $('html,body').animate({
            scrollTop: $($(this).attr('href')).offset().top
        }, 1200, 'easeInOutExpo');
        return false;
    });

    $(".category-slider-trigger").click(function(e) {
        e.preventDefault;
        $this = $(this);
        var isVisible = $this.next().is(":visible");

        $(".category-slider-content").stop(true, true).slideToggle('slow');
        $(".trigger-symbol").attr('src', '/images/plus.png');

        if (!isVisible) {

            $this.find(".trigger-symbol").attr('src', '/images/minus.png');
            //$this.next().stop(true,true).slideUp('slow');
        }

        return false;
    });

});​

工作演示

好的API:

如果您只使用slideToggle进行显示和隐藏,则可以避免完整的isVisible逻辑

这会有帮助的。B-)

代码已更改

$(".category-slider-content").stop(true,true).slideToggle('slow');
完整代码

$(document).ready(function() {

    $('a[href*=#]').bind('click', function() {
        var $href = $(this).attr('href')
        $('html,body').animate({
            scrollTop: $($(this).attr('href')).offset().top
        }, 1200, 'easeInOutExpo');
        return false;
    });

    $(".category-slider-trigger").click(function(e) {
        e.preventDefault;
        $this = $(this);
        var isVisible = $this.next().is(":visible");

        $(".category-slider-content").stop(true, true).slideToggle('slow');
        $(".trigger-symbol").attr('src', '/images/plus.png');

        if (!isVisible) {

            $this.find(".trigger-symbol").attr('src', '/images/minus.png');
            //$this.next().stop(true,true).slideUp('slow');
        }

        return false;
    });

});​

我真的不明白第一个函数应该做什么,但无论如何:

$(function() {
    $('a[href*="#"]').on('click', function(e) {
        e.preventDefault;        
        $('html,body').animate({scrollTop: $(this.href).offset().top}, 1200, 'easeInOutExpo');
    });

    $(".category-slider-trigger").on('click', function(e) {
        e.preventDefault;
        $(".category-slider-content").stop(true, true).slideToggle('slow');
        $(".trigger-symbol").attr('src', $(this).is(':visible')?'/images/plus.png':'/images/minus.png');
    });
});​

我真的不明白第一个函数应该做什么,但无论如何:

$(function() {
    $('a[href*="#"]').on('click', function(e) {
        e.preventDefault;        
        $('html,body').animate({scrollTop: $(this.href).offset().top}, 1200, 'easeInOutExpo');
    });

    $(".category-slider-trigger").on('click', function(e) {
        e.preventDefault;
        $(".category-slider-content").stop(true, true).slideToggle('slow');
        $(".trigger-symbol").attr('src', $(this).is(':visible')?'/images/plus.png':'/images/minus.png');
    });
});​

谢谢@Tats\u innit-我不确定是否需要所有代码,但谢谢你的帮助-只是学习jQuery。你好@Richard很高兴我能帮忙,不用担心!)谢谢@Tats_innit-我不确定是否所有的代码都是必需的,但是谢谢你的帮助-只是学习jQuery。Hiya@Richard很高兴我能帮上忙,不用担心!)