0

したがって、別のものがスライドダウンしたときにスライドアップする div が必要です。

例:

ホームボタンが 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

こんにちは、このフィドルをチェックしてください。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 に答える
0

id="Home" class="open"2 つのボタンとid="Game" class="open"、および 2 つの 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 に答える