我有一个关于如何维护所呈现的 jGrowls 状态的 jQuery / jGrowl 问题。我有一个使用 PHP/MySQL 构建的通知系统。那是容易的部分。我已经设法让 jGrowls 正确显示。
现在,我想保持消息/jGrowls 的状态,直到用户单击每个 jGrowl 的“关闭”或关闭所有 jGrowl 的“全部关闭”链接。我有一个 users_notifications MySQL 表,我可以在其中管理哪些通知已被“读取”。我认为最好的方法是使用 close() 或 beforeClose() 回调向服务器发出 getJSON (ajax) 请求,但我不确定如何编写。我需要通过请求将通知 ID 传回。
<?php
if (!empty($notifications))
{
foreach ($notifications as $notification)
{
?>
<script>
<!--
$(document).ready(function() {
var notification = <?php echo json_encode($notification); ?>;
$.jGrowl(notification.message, {
beforeClose: function(){
var markReadUrl = '<?php echo site_url('notifications/ajax_mark_as_read') ?>' + '/' + notification.id;
$.getJSON(markReadUrl, function(data) {
console.log(data);
});
}
});
});
//-->
</script>
<?php
}
}
?>
02/12 更新:我想我发现了让我困惑的地方。
测试时我使用了 2 或 3 个通知 (jGrowls)。我期待当用户单击单个 jGrowl 关闭链接时会触发 beforeClose() 回调函数,即 jGrowl 右侧的“x”链接。'x' 关闭是否有回调?请注意,当用户单击“全部关闭”时,beforeClose() 回调会正确触发,并触发每个 jGrowl 的函数。所以,在某种程度上,“关闭所有”就像一个“标记为已读”链接,而“x”链接什么也不做。这是预期的功能吗?