0

所以,当另一个向下滑动时,我需要一个 div 向上滑动。

例子:

当 Home 按钮被点击一个 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);
    }
});
4

3 回答 3

0

我想你是说你有两个按钮id="Home" class="open"andid="Game" class="open"和两个 divid="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();

});
于 2013-07-19T01:31:14.927 回答
0

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

在 if else 语句中你做错了

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

将其替换为

else if($this.hasClass('active') === false) {
于 2013-07-19T02:02:02.970 回答
0

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

主要思想是……

如果单击的元素是active,则将其删除,否则:1.找到(如果有)已经存在的active元素(使用$('.active'))并使用jQuery.map()使它们处于非活动状态并将它们向上滑动,以及2.使元素单击active

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

重要提示:函数内部不同于函数外部this(或者更确切地说,正如您所说的那样)map()this$thismap()

于 2013-07-19T09:04:13.357 回答