jQuery 淡出 =>替换为=>淡入
我在使用 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);
}));
});
}
}
};
I'm having a small problem with replaceWith fadeIn and fadeOut functions:
$('#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);
}));
});
The form fades out but nothing else happens - it removes the form but replaces it with nothing.
Any idea what might be going wrong here?
It's actually the part of the object literal - which goes like this:
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);
}));
});
}
}
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不确定您正在尝试做的所有事情,但这希望能让您走上正确的道路。脚本中的一个关键问题是 $("new message")。动态添加时需要创建 HTML,例如
$("
Something
")
。在 JSFiddle 这里。
No sure of everything you're trying to do but this will hopefully set you off on the right lines. A key issue in your script was $("new message"). You need to create HTML when you are adding dynamically, such as
$("<p>Something</p>")
.On JSFiddle here.
好的 - 问题解决了!
看来 $.post() 调用的响应是纯文本,没有任何包装器(span、div),因此它不能用作元素。一旦我用跨度包裹了内容 - 一切都工作得很好。
Ok - problem solved!
It appeared that the response from the $.post() call was a plain text without any wrapper (span, div) therefore it could not be used as an element. Once I've wrapped the content with the span - it all worked just fine.