0

我对 replaceWith fadeIn 和 fadeOut 函数有一个小问题:

$('#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 回答