- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个显示用户收到的通知的 div,问题是我想分别在用户收到通知并单击通知时以淡入和淡出效果显示它们。
这是 HTML:
<li class="recentChatUser" onclick="createChatWindow('User',id);">
<div class="user_data">
<div class="foto_profilo_utenti_recenti_container">
<img src="./userimg.jpg" class="user_photo"/>
</div>
<span class="userName">User name</span>
<div id="messages_notifications_$id$" class="message_notification">0</div>
</div>
</li>
每个列表项代表用户的一个 friend 。div id="messages_notifications_$id$"... 包含来自用户特定 friend 的通知数量,用户尚未阅读的通知数量。 $id$ 是用户 friend 的唯一标识(因此 0 表示包含来自 id = 1 的用户 friend 的所有通知的 div,依此类推)。我恢复了使用长轮询对服务器进行异步调用的通知数量,该服务器返回一个 json,其中包含来自特定 friend 的所有消息给用户。然后我使用 JQuery 使用 friend 的 id 将通知的数量更新到 div。
一切都很好,除非显示通知(我希望它以 fadeIn() 的方式显示,但它没有,似乎执行了 fadeOut() 但没有任何动画淡入淡出,即当有通知时它会立即出现,而不是我告诉它的 fadeIn())当我点击列表中的一个项目时,我想让 div id="messages_notifications_$id$"以 fadeOut() 的方式消失,然后我刷新通知并将它们标记为已读,但是 fadeOut() 不起作用(同样,通知 div 立即消失,但最奇怪的是 fadeOut 被调用因为它是我用来制作的唯一方法通知 div 消失)...我什至尝试过使用 show(1000) 而不是 fadeIn() 和 hide(1000) 而不是 fadeOut,但它没有用。这是通知应该用 fadeIn() 显示的代码,当我清理通知并淡出通知 div 时:
var notifyUserWithNewMessages = function(notifications) {
for (var i = 0; i < notifications.length; i++) {
var notification = notifications[i];
var notificationDiv = $("#messagges_notifications_" + notification.fromid);
notificationDiv.text(notification.counter);
console.log(notificationDiv);
// Showing the notification only if the list item is not selected and the notification div has display:none;
if (notificationDiv.css("display") == "none" &&
!notificationDiv.parents("li.recentChatUser").hasClass("recentChatUserActive")) {
notificationDiv.fadeIn(1000);
}
}
return;
};
立即显示 notificationDiv。 'notifications' var 是一个简单的 Plain Javscript 对象数组(它在每次异步请求后更新)并且看起来像这样:
var notifications = [{counter:num, fromid:id, read:false},
{counter:num, fromid:id, read:false},
...];
counter 属性是来自用户特定 friend 的通知数量,fromid 属性包含 friend 的 id,我用它来检索相应的通知 div,我将计数器的通知数量与 .text(notification .couter) Jquery 方法。
然后当用户点击列表项时:
$(".recentChatUser").on("click", function() {
if ($(this).hasClass("recentChatUserActive")) {
return;
}
$(".recentChatUser").each(function () {
if ($(this).hasClass("recentChatUserActive")) {
$(this).removeClass("recentChatUserActive");
return;
}
});
$(this).addClass("recentChatUserActive");
var notificationDiv = $(this).find(".message_notification");
if (notificationDiv.css("display") == "block") {
var fromid = notificationDiv.attr("id").match(/([0-9]+)$/);
clearNotificationsFromUser(fromid[0]);
console.log("I am fading out");
notificationDiv.fadeOut(1000);
}
});
console.log 显示“我正在淡出”并且通知 div 消失了,但又立即消失了!为什么会这样?我在搞砸什么吗?也许当我 fadeIn() div 我在一个 for 循环中并且它不能正常工作?但是 fadeOut() 调用呢,我不在那里循环。或者可能是因为我在列表项上有一个 onclick=""事件?我试图删除它,但没有任何改变。顺便说一下,onclick jst 创建了一个聊天窗口,通过 JSON 请求从服务器恢复消息(我想这与我的 fadeIn()、fadeOut() 问题无关)。
它会是什么?
感谢关注。
我忘了,这是通知div的CSS:
.message_notification {
display:none;
color:#FFFFFF;
text-align:center;
position:absolute;
top:0;
right:0;
height:20px;
min-width:20px;
background:#CC1414;
border-radius:50%;
text-shadow:1px 1px 0 rgba(0,0,0,.4);
}
编辑:这是 fiddle -> http://jsfiddle.net/8WDqd .它在这个例子中按预期工作,但我使用的是带有静态数据的 setInterval。该代码与我使用的代码完全相同,只是我使用 getJSON 方法通过对 web 服务的长轮询调用加载通知,并在请求成功时调用 notifyUserWithNewMessages(notifications) function(data) {} 成功回调getJSON() JQuery 方法。那会是什么呢?绑定(bind)到这个异步调用吗?
希望得到一些帮助!
最佳答案
这很难说,因为您的 jsfiddle 按预期工作。与导致它发生的 fiddle 相比,您的代码必须有一些不同。据我所知,在回调中调用 fadeIn() 应该不会有什么不同。
您可以尝试设置一个计时器来调用“淡入”,看看它有什么不同。查看您更新的 fiddle
。所以,fadeIn
应该在回调之外调用。代码:
function myFadeIn(elem)
{
elem.fadeIn(200);
}
var notifyUserWithNewMessages = function(notifications) {
...
//notificationDiv.fadeIn(200);
setTimeout(myFadeIn,10,elem);
...
}
不过,我认为可能发生了其他事情,我们可以看看调用 notifyUserWithNewMessages
的代码吗? ?是否有任何其他代码可能正在该 div 上运行导致它立即显示?您是否能够从无法运行的版本中删除代码,直到您可以运行它,例如停止 ajax 调用等?
我意识到这不是一个挽救局面的答案,但它超出了我在评论中所能容纳和呈现的范围。
关于javascript - 为什么 fadeIn()、fadeOut()、show(400)、hide(400) 动画在我的情况下不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22882443/
我正在尝试这个: var notifications = $( "#notifications" ); notifications.fadeOut("slow") .complete(func
我的印象是,下面的回调函数中的 css 规则只有在 fadeOut 完成后才会执行。事实似乎并非如此。回调函数中的行实际上是在单击时执行的。有什么想法我哪里出错了吗? $('a.close_link,
我有一个 ID 为 basket 的元素,当鼠标悬停在另一个元素上时,会显示另一个元素,但该元素既不是第一个元素的子元素,也不是第一个元素的直接同级元素。我希望这是有道理的。 当我将鼠标移出第一个或第
我有三个李: Don't show again 看起来是这样的: 当用户按下不再显示时,我想在 3 秒后删除这些 li-s。 所以我只需要删除它们的代码。
我收到此错误: Uncaught TypeError: Object [object Object] has no method 'fadeout' 这是我的代码: // Fade out the S
当我使用 jQuery fadeOut 方法时,我遇到了一个特殊的问题。 当我使用下面的代码时,它会淡出。 $('#id').fadeOut("慢"); 但是当我使用下面的代码时,它并没有淡出,它只是
当用户单击“否”时,我的 .fadeOut() 无法正常工作,我知道这是因为 div.confirm 嵌入了span,这是调用 .fadeIn() 函数的地方。 我正在开发一个需要此 HTML 层次结
基本上,我试图通知用户他们是否成功添加了他们的文件,并且通知在 3 秒后消失。问题是我的整个页面都消失了,而不仅仅是通知。它与我的其他页面一起工作,只是想知道为什么它在这个页面上的工作方式不同。 se
我一直在网上搜索,找不到我的问题的答案,所以我会尝试自己做,并希望最好! 我有一个提供欢迎然后淡出的主舞台,但我想在淡出消失的那一刻切换舞台!有人对此有答案吗? 下面的小代码可以更好地理解: impo
我使用以下 HTML 代码: User's email is duplicated! 设置警报超时的JS是, $scope.ErrorAlert = false; setTimeou
我有一个 它有一个 CSS 背景图像。在 CSS 中,我有 :hover 伪类来更改背景位置。 我想fadeIn和 fadeOut使用 jQuery 的两个不同的背景图像。我不想为背景位置设置动画,但
我正在尝试为我正在开发的博客制作一个导航菜单,目前我正在尝试将其设置为单击“主页”选项卡时其他两个选项卡淡出的位置。我不知道为什么这段代码不起作用,因为它是非常简单的几行代码。我不会添加 CSS,因为
我是新手,我只想在移动完成后在我的文本移动中添加淡出效果。但问题是我已经将@keyframe 淡出。和.fadeout。但它没有用。有什么帮助吗?谢谢。这是代码。 HTML Wat
非常简单的前提。我有一个 float 图像,我想显示它背后的图像。在 chrome 中工作正常,但在 FF 11 中不行。 $("#floater").fadeOut("slow");
我正在开发一个导航栏,上面有一个图像并且那里有链接。当用户悬停这些链接时,它会将背景更改为导航栏悬停图像,并通过 CSS 的 background-position 属性指定其位置。现在我想让我网站上
我的 slider 有一些问题。我有彩色 div(在原始元素中是图像)和上面的文字。我想要的是: 淡入背景色 文本淡入 淡出文本 淡出背景色。 听起来很简单,但我无法获得这种效果。我不能及时淡出文本,
我对 .attr jQuery 方法有疑问。我想在点击时创建 4 个事件:淡出、延迟、更改 src 属性和淡入。我有这段代码: $( "#button" ).click(function() {
我最近一直在玩 jQuery,我决定制作这个简单的待办事项列表应用程序。我的代码的问题是,当我检查不是第一项的元素时,fadeOut() 函数不起作用。然而,在检查第一项之后,它开始为所有其他元素工作
默认情况下,我隐藏了几个 DIV,然后当用户单击某个按钮时我将它们淡入。这很好用,但是当我尝试使用所述 .holder DIV 中的跨度关闭 .holder DIV 时,只有第一个有效。当我点击其他人
我有一个包含图像和 .png 纹理的主页,它是每个图像上的伪元素。我需要这个 .png 纹理在悬停时 FadeOut。按原样配置后,我该如何实现该功能?还是通过更改当前设置更容易实现? @import
我是一名优秀的程序员,十分优秀!