jQuery——替换用户消息——重复它自己
jQuery - Replacing a user message - repeats itself
我有一个简单的问题。我有一个函数,我给用户一条消息,它以预定义的div显示消息。然而,如果另一条消息出现得太快,它会更改消息,但随后会淡出并重新出现。
这就是我现在的处境
function readUserMessage(message) {
if($('#userMessage').is(':visible')) {
$('#userMessage').fadeOut(200).html("<span style='"'">" + message + "</span>").fadeIn(300).delay(3000).fadeOut(300);
} else {
$('#userMessage').html("<span style='"'">" + message + "</span>").fadeIn(300).delay(3000).fadeOut(300);
}
}
非常感谢您的帮助。
.html()
不会自动添加到jQuerys fx queue
中,因此它不会"等待"到动画内容完成。您可以通过手动添加队列条目(如)来解决此问题
$('#userMessage').fadeOut(200).queue(function(next) {
$(this).html("<span style='"'">" + message + "</span>");
next();
}).fadeIn(300).delay(3000).fadeOut(300);
参考:.queue()
你可以试试这个。fadeOut
有一个回调函数,一旦淡出结束就会调用它。你可以用这个。
function readUserMessage(message) {
if ($('#userMessage').is(':visible')) {
$('#userMessage').fadeOut(200, function() {
$(this).html("<span style='"'">" + message + "</span>")
.fadeIn(300).delay(3000).fadeOut(300);
});
} else {
$('#userMessage').html("<span style='"'">" + message + "</span>")
.fadeIn(300).delay(3000).fadeOut(300);
}
}
您可以查看演示@jsFiddle.net:http://jsfiddle.net/KZYbs/
您可以在使用stop函数调用其他效果(淡入淡出、幻灯片等)之前强制完成队列。
对于这样的问题,理论上最好的解决方案是使用队列。
基本上,在您的场景中,每当您阅读用户消息时,都会执行一个操作。如果您想管理这些操作,可以将它们放在队列中,然后进行管理。
jAndy发布的代码非常有趣,如果你想了解更多关于队列的信息,它们在stackoverflow和jquery网站上都有很好的解释。
花点时间在这个问题上会很有帮助,因为排队在很多情况下都很有用。
相关文章:
- 获取其中骰子的总和'它自己的窗口.并不是所有的窗户
- addEventListener对所有元素都有效,但有时它会提醒消息两次或多次
- 如何在 redis 中将 JS 对象传递给它自己的事件参数 - 连接事件上的哨兵
- Socket.io,给自己发消息
- CQ使用自己的消息登录
- 如何根据用于提交的表单的 ID 更改用户消息
- 功能具有子功能,但也有它自己的功能.功能.
- 如何将字母从变量隔离到它自己的变量中,停止在单词长度处
- 清除运行时在它自己的函数中的超时
- 添加到我的项目中的 html 页面自定义 atribute 将由它自己调用(如数据绑定)
- Javascript EventListener 由它自己调用
- 如何实现即时用户消息和通知系统
- 如果单击目标不是它自己或它的子对象,则使用jQuery隐藏元素
- jQuery——替换用户消息——重复它自己
- require.js模块是否可以依赖于它自己
- JQuery单击函数不适用于具有它的父元素中的按钮'它自己的点击功能
- 是否可以创建一个Vorpal应用程序,命令's的输出直接到达终端,而不是'它自己的外壳
- 元素,紧跟用户消息
- javascript in IE递归->window.frames不等于它自己
- javascript:当用户按下按钮时,向自己发送消息