关闭总是一个打开元素jquery切换

时间:2014-03-22 14:32:48

标签: javascript jquery toggle

请告诉我,现在一切正常,但有一个项目仍然打开,关闭它吗?

http://jsfiddle.net/ktTKe/3/

 $(document).ready(function () {
        var open = $('.open'),
            a = $('.location_cont').find('a.open');
         $(".item_in ul").customScrollbar({
            skin: "default-skin",
            hScroll: false,
        });
        open.on('click',function (e) {
            e.preventDefault();
            var $this = $(this),
                speed = 300;
            if ($('.open').hasClass('active') === true) {
                $('.open').removeClass('active').next('.item_in').slideUp(speed);
            }
            if ($this.hasClass('active') === true) {
$this.removeClass('active').next('.item_in').slideUp(speed).find('ul').customScrollbar("resize", true);
            } else if ($this.hasClass('active') === false) {
                $(".item_in ul").css("resize", true);
                $this.addClass('active').next('.item_in').slideDown(speed).find('ul').customScrollbar("resize", true);
            } else {
                $this.removeClass('active').next('.item_in').slideUp(speed);
                $this.addClass('active').next('.item_in').delay(speed).slideDown(speed).find('ul').customScrollbar("resize", true);
            }
        });
    });

2 个答案:

答案 0 :(得分:1)

我在小提琴中进行了修改

http://jsfiddle.net/Vym2M/

$(document).ready(function () {
    var open = $('.open'),
        a = $('.location_cont').find('a.open');
     $(".item_in ul").customScrollbar({
        skin: "default-skin",
        hScroll: false,
    });
    open.on('click',function (e) {
        e.preventDefault();
        var speed = 300;
        if ($(this).hasClass('active') === true) {
            $(this).removeClass('active').next('.item_in').slideUp(speed).find('ul').customScrollbar("resize", true);
        } else if ($(this).hasClass('active') === false) {
            $(".item_in ul").css("resize", true);
            $(this).addClass('active').next('.item_in').slideDown(speed).find('ul').customScrollbar("resize", true);
        }
    });
});

取消

    if ($('.open').hasClass('active') === true) {
        $('.open').removeClass('active').next('.item_in').slideUp(speed);
    }

并使用$(this)代替变量$ this。

删除最后一个,因为没有必要

答案 1 :(得分:0)

向上滑动时不要删除active类,以便检查是否显示了当前单击的元素。

open.on('click',function (e) {
    e.preventDefault();
    var $this = $(this),
        speed = 300;
    if ($('.open').hasClass('active') === true) {
        $('.open').next('.item_in').slideUp(speed);
    }
    if ($this.hasClass('active') === true) {
        $this.removeClass('active').next('.item_in').slideUp(speed).find('ul').customScrollbar("resize", true);
    } else {
        $(".item_in ul").css("resize", true);
        $('.open').removeClass('active');
        $this.addClass('active').next('.item_in').slideDown(speed).find('ul').customScrollbar("resize", true);
    } 
});

http://jsfiddle.net/ktTKe/4/