0

みなさんこんにちは、モーダル ウィンドウのコンテンツを同時に非表示にしたり表示したりしようとしています。

右下をクリックすると、現在の ID が非表示になり、次の ID が表示されます。

これは問題なく動作しますが、これにエフェクト スライドを適用したいと考えています。

右下をクリックすると、これが私のコードです

$('#right').live('click', function(){
    var total=$('.elemento').length;
    var siguiente= parseInt(actual) +1;
    if (siguiente <= total){
        AlaDerecha(sig);

    }
});

function AlaDerecha(sig){
    previo = actual;
    actual = sig;
    $("[data-item ="+ previo + "]").hide("slide", { direction: "left" }, 1000);
    $("[data-item ="+ actual + "]").show("slide", { direction: "right" }, 1000);
}

このようなAlaDerecha関数で消去(スライド...)すると

function AlaDerecha(sig){
    previo = actual;
    actual = sig;
    $("[data-item ="+ previo + "]").hide();
    $("[data-item ="+ actual + "]").show();
}

正常に動作し、現在のアイテムを非表示にして次のアイテムを表示しますが、スライド効果を適用すると、現在のアイテムは左に移動しますが、非表示ではなく、次のアイテムは表示されません。

何か案が!

ありがとう

4

1 に答える 1

1

まず、を使用しないでください。.live()これは非推奨であり、ブラウザ間で望ましくない結果が生じるためです。次のようにコードを変更します。

$('body').on('click', '#right', function(){
    var total=$('.elemento').length;
    var siguiente= parseInt(actual) +1;
    if (siguiente <= total){
        AlaDerecha(sig);
    }
});

スライドを機能させるには、コールバック関数を使用します。

function AlaDerecha(sig){
    previo = actual;
    actual = sig;
    $("[data-item ="+ previo + "]").hide("slide", { direction: "left" }, 1000, function(){
        $("[data-item ="+ actual + "]").show("slide", { direction: "right" }, 1000);
    });
}
于 2013-03-05T02:47:02.717 に答える