2017-03-09 72 views
-1

我试图隐藏或删除用户点击下拉菜单时的一些html元素。javascript jquery在页面刷新后仍然隐藏/删除

我已经尝试过:

$("#notif").click(function(){ 
$("#count").remove(); 
}); 

但问题是,当用户刷新页面,则#COUNT元素是再次显示。 如何在用户登录时隐藏#count,即使页面被刷新并在用户重新登录时再次显示 我对JavaScript不太了解。

我可以在JavaScript/jQuery中做到这一点?或者我应该保持在PHP会话或什么的价值?

+2

[使用本地存储(http://stackoverflow.com/a/12063002/4248328) –

+0

使用'localStorage' – Bharat

+1

如上述评论,你可以使用localStorage的或饼干为了这个目的。 – user7417866

回答

0

我使用jQuery插件(jQuery的饼干)这一点,你可以从 https://github.com/js-cookie/js-cookie

首先得到相同的所有设置的Cookie当用户点击

按钮
$("#notif").click(function() { 
    Cookies.set('RemoveCount', 'true'); 

    $("#count").hide(); 
}); 

然后在你的页面加载,你可以检查此为你的目的

$(function() { 
    if (Cookies.get('RemoveCount') == 'true' && Cookies.get('RemoveCount') != 'undefined') { 
     $("#count").hide(); 
    } else { 
     $("#count").show(); 
    } 
} 

<html> 
<head> 
<script 
    src="https://code.jquery.com/jquery-3.1.1.min.js" 
    integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" 
    crossorigin="anonymous"></script> 
<script src="../js.cookie.js"></script> 
</head> 
<body> 
    <button id='clckced'> removeCount</button> 
    <div id="RemoveCount"> 
    This should be removed. 
    </div> 
    <script> 
     $(function(){ 
      if (Cookies.get('RemoveCount') == 'true' && Cookies.get('RemoveCount') != 'undefined'){ 
       $("#RemoveCount").hide(); 
       } else { 
        $("#RemoveCount").show(); 
       } 
      $('#clckced').click(function(){ 
       Cookies.set('RemoveCount', 'true'); 
       $("#RemoveCount").hide(); 
      }) 
     }); 
    </script> 

</body> 
</html> 

只是删除Cookies当用户注销...

Cookies.remove('RemoveCount'); 
+0

我不能整合这与laravel – Raphael

+0

它没关系,它现在工作。谢谢 – Raphael

+0

应该没有任何问题,因为你只需要玩JS和jQuery。 – user7417866

0

它很简单。

$(document).ready(function(){ 
    var x=$("#notif option:selected").val(); 
    if(x=="" || x==0){$("#count").remove();} 
}); 

将以上代码放在JavaScript文件或脚本标记中。

+0

你将如何维持这个页面刷新? – user7417866

0
<?php 
if(!isset($_SESSION["session_name"])) 
{ 
$_SESSION["session_name"]=''; 
} 
?> 
<script> 
var session=<?php echo $_SESSION["session_name"]; ?>; 
if(session!='') 
{ 
$("#count").hide(); 
} 
</script> 
0
//one option 
$(document).ready(function(){ 
    $("#count").hide(); 
}); 
//second option 
$(document).ready(function(){ 
    $("#count").remove(); 
}); 
//third option 
$(document).ready(function(){ 
    $("#count").css("display","none"); 
}); 
+0

无论您是否点击隐藏按钮,这总是会隐藏计数 – user7417866

+0

您可以将用户操作存储在数据库中,并且在装入或刷新时给出css,因为您将分数保存在 –

+0

中,但是在哪里检查到您的解决方案? – user7417866

0

同样地,我试图像这样

$("#notif").click(function(){ 
$("#count").remove(); 
}); 

我一直在使用会话存储,它存储在客户端幻灯片

c赫克此链接:

http://jsfiddle.net/h4JXs/5300/

-1

您还可以使用的sessionStorage(或localStorage的)记住点击。

每次页面加载时,首先检查存储以检查用户是否单击。如果是这样,#count被删除。

当用户点击#notif时,删除#count元素,并将信息保存到存储中,以便下次加载页面时可以再次删除该页面。

sessionStorage将在浏览器窗口或选项卡打开时在本地保存信息。 localStorage将永久保存,直到明确删除。

在这个问题上,你有本地存储,sessionStorage的,饼干和会话之间的差异一个很好的讨论:What is the difference between localStorage, sessionStorage, session and cookies?

在你的情况,我认为最合适的解决方案是sessionStorage的(或localStorage的取决于如何持久你想该信息),因为不需要将该信息发送到服务器。

<html> 
    <head> 
    <script 
     src="https://code.jquery.com/jquery-3.1.1.min.js" 
     integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" 
     crossorigin="anonymous"></script> 
    </head> 
    <body> 
    <button id='notif'> removeCount</button> 
    <div id="count"> 
     This should be removed. 
    </div> 
    <script> 
     window.onload = function() { 
     if (window.sessionStorage && window.sessionStorage.getItem('removeCount') == 'true') { 
      $("#count").remove(); 
     } 

     $('#notif').click(function() { 
      if (window.sessionStorage) { 
      window.sessionStorage.setItem('removeCount', 'true'); 
      $("#count").remove(); 
      } 
     }); 
     } 
    </script> 

    </body> 
</html> 
+0

你真的愚蠢或试图成为..只存储到本地机器,除非它明确集成服务器使用..只是通过阅读答案的问题并不意味着对所有情况都是如此...... – user7417866

+0

cookie本地存储(在客户端)。但是,每次请求都会在服务器和客户端之间传输它们(请参阅[https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie](https://developer.mozilla) .org/en-US/docs/Web/API/Document/cookie)),这就是我想再次说的 – airos

+0

,如果服务器要求,如果不是,他们不会 – user7417866