0

replaceWith フェードインおよびフェードアウト関数に小さな問題があります。

$('#form').fadeOut(300, function() {
    var message = 'some message';
    $(this).replaceWith($(message).fadeIn(300, function() {
        var t = $(this);
        setTimeout(function() {
            t.fadeOut(300, function() {
                location.reload();
            });
        }, 4000);
    }));
});

フォームはフェードアウトしますが、他には何も起こりません。フォームは削除されますが、何も置き換えられません。

ここで何がうまくいかないのでしょうか?

これは実際にはオブジェクト リテラルの一部であり、次のようになります。

var formObject = {
submitFadeOutReload : function(url, arr) {      
    jQuery.post(url, arr, function(data) {
        formObject.submitReplaceReload(data.message);
    }, 'json');
},
submitReplaceReload : function(message) {
    if (message !== '') { 
        formObject.objForm.fadeOut(300, function() {
            $(this).replaceWith($(message).fadeIn(300, function() {
                var t = $(this);
                setTimeout(function() {
                    t.fadeOut(300, function() {
                        $(this).replaceWith($(clone).fadeIn(300));
                    });
                }, 2000);
            }));
        });
    }
}
};
4

2 に答える 2

2

あなたがやろうとしていることすべてに確信はありませんが、うまくいけば、これはあなたを正しい方向に導くでしょう. スクリプトの重要な問題は $("new message") でした。など、動的に追加する場合は HTML を作成する必要があります$("<p>Something</p>")

<div id="foo">my div</div>

$(document).ready(function() {
    $('#foo').fadeOut(300, function() {
        var $newElement = $('<div id="new div">new message</div>');
        $(this).replaceWith($newElement);
        $newElement.fadeIn(300, function() {
            document.location.reload();
        });
    });
});

ここのJSFiddleで。

于 2011-09-13T13:37:36.653 に答える
0

わかりました - 問題は解決しました!

$.post() 呼び出しからの応答は、ラッパー (span、div) のないプレーン テキストであったため、要素として使用できませんでした。コンテンツをスパンでラップしたら、すべてうまくいきました。

于 2011-09-13T14:21:32.327 に答える