Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择Div-未读邮件-阅读类似facebook收件箱的邮件_Javascript_Jquery_Css_Cookies - Fatal编程技术网

Javascript 选择Div-未读邮件-阅读类似facebook收件箱的邮件

Javascript 选择Div-未读邮件-阅读类似facebook收件箱的邮件,javascript,jquery,css,cookies,Javascript,Jquery,Css,Cookies,我正试图使左侧导航链接像facebook收件箱一样。 第一类有三种不同。未读(浅蓝色)2.已读(白色)3。选定(深蓝色) 事实上,如果我用正常的方式做,这很容易。这意味着每次我点击阅读每条消息时都需要重新加载页面 但在这种情况下,我想完全用ajax的方式来做。我已经完成了所有的工作。但要在最后一步解决问题 想法是:我使用cookie(jquery.cookie插件)存储上次单击的Div Id,然后每次单击Div阅读消息时,上次单击的Div Id必须变为白色。 (因为消息已被读取) 当我点击未读邮

我正试图使左侧导航链接像facebook收件箱一样。 第一类有三种不同。未读(浅蓝色)2.已读(白色)3。选定(深蓝色)

事实上,如果我用正常的方式做,这很容易。这意味着每次我点击阅读每条消息时都需要重新加载页面

但在这种情况下,我想完全用ajax的方式来做。我已经完成了所有的工作。但要在最后一步解决问题

想法是:我使用cookie(jquery.cookie插件)存储上次单击的Div Id,然后每次单击Div阅读消息时,上次单击的Div Id必须变为白色。 (因为消息已被读取)

当我点击未读邮件分区时,出现了一个问题: 未读邮件Div再次变为浅蓝色

我使用了很多方法,包括普通javascript和jQuery

让我们先看看我的部门: 示例div: ::div的id是数据库中的数组,但在这里我使其易于查看

<div id ='001' class='normal' onclick=readmsg(id_msg1)></div>
<div id ='002' class='normal' onclick=readmsg(id_msg2)></div>
<div id ='003' class='normal' onclick=readmsg(id_msg3)></div>
为了将类unread-->更改为类read,我只做了这些

var ck= $.cookie('last_read');  

    $("#"+id_msg).addClass('inbx_unread'); // 

    $("#"+last_read).removeClass('inbx_unread');// get the last ID of clicked div and remove class unread which´s light-blue
我也尝试过普通的javascript,比如:

document.getElementById(last_read).className.replace("inbx_unread","");
//我这里有更多的代码,但正如我上面提到的,我已经完成了。唯一的一个问题是,单击其他div后,未读(浅蓝色)再次变回浅蓝色

我已签入firebug和alert,我得到了正确的值。

我不知道像cookie那样存储临时数据的其他方法


简而言之,在我单击另一个Div之后,如何停止已单击的未读Div以再次返回其原始类?

这里是一种稍微不同的方法。 您可以只使用jQuery事件

HTML

<div id ='001' class='message unread'>Message 1</div>
<div id ='002' class='message unread'>Message 2</div>
<div id ='003' class='message unread'>Message 3</div>
您可以检查正在工作的JSFIDLE:


希望有帮助,祝你好运

我想我会重建我的角色。试试你给我的密码。感谢您的努力,帮助我找到解决方案。您是对的,JSFIDEL在safari中不起作用。但是,当您在localhost中查看真正的html文件时,它会起作用。您可以加载此文件并将其签出:
<div id ='001' class='message unread'>Message 1</div>
<div id ='002' class='message unread'>Message 2</div>
<div id ='003' class='message unread'>Message 3</div>
$(document).ready(function(){

    $(".message").click(function() {

        // we get the clicked element ID
        var id_msg = $(this).attr('id');

        // we read the cookie, to remove the previous selected class to the last_read element
        var last_read = $.cookie('last_read');
        $('#' + last_read).removeClass("inbx_selected");

        // we set the cookie, so we keep can remove the selected class in the next click
        $.cookie('last_read', id_msg);

        //
        // probably, here you should do some AJAX post to update the message status at the database
        // 

        // we remove the unread class, and add teh selected class
        $(this).removeClass("inbx_unread").addClass("inbx_selected");

    });

});