为什么我的div交换不起作用?

时间:2013-07-19 01:09:24

标签: javascript html

所以,当另一个滑落时,我需要一个div来滑动。

示例:

当点击主页按钮时,我们将其称为box_Home,向下滑动。单击“游戏”按钮后,box_Home应向上滑动,然后box_Games应向下滑动。发生的事情是它们重叠而不是交换。

http://jsfiddle.net/M8UgQ/15/

var open = $('.open'),
    a = $('ul').find('a');

console.log(a.hasClass('active'));

open.click(function(e) {
    e.preventDefault();
    var $this = $(this),
        speed = 500;

    var link_id = $this.attr('id');
    var box_id = '#box_' + link_id;

    console.log(box_id);
    if($this.hasClass('active') === true) {
        $this.removeClass('active');
        $(box_id).slideUp(speed);
    } else if(a.hasClass('active') === false) {
        $this.addClass('active');
        $(box_id).slideDown(speed);
    } else {
        a.removeClass('active')
        $(box_id).slideUp(speed);

        $this.addClass('active');
        $(box_id).delay(speed).slideDown(speed);
    }
});

3 个答案:

答案 0 :(得分:0)

我认为你说你有两个按钮id="Home" class="open"id="Game" class="open",以及两个div id="box_Home"id="box_Game"。如果是这样,您将class="box"添加到box_Home和box_Game并执行以下操作:

$('.open').click(function(e) {

    e.preventDefault();
    var $this = $(this);

    var link_id = $this.attr('id');
    var box_id = '#box_' + link_id;

    $('.box').slideUp();
    $(box_id).slideDown();

});

答案 1 :(得分:0)

嗨检查这个小提琴我希望你需要实施的东西 jsfiddle

在if else语句中

你犯了一个错误

else if(a.hasClass('active') === false) { 

替换为

else if($this.hasClass('active') === false) {

答案 2 :(得分:0)

看看这个 http://jsfiddle.net/rWrJ9/1/

主要观点是......

如果点击的元素为active,请将其删除,否则: 1。查找(如果有)已active元素(使用$('.active'))并使用jQuery.map()要使它们处于非活动状态并向上滑动, 2。会点击该元素active

我还删除了不需要的变量a

重要提示: this功能中的map()this(或更确切地说,$this之外的内容不同) map()函数