[英]Hide an href link if the user is logged in
我是jQuery新手。 我在页面标题中有a
链接
<div id="navigation">
<ul>
<li><a href="/home.html?sign=true">Home</a></li>
<li><a href="/jobs.html">Tests</a></li>
<li><a href="/vps.html">Jobs1</a></li>
<li><a href="/ust.html">Jobs2</a></li>
<li><a href="/sub.html">Subscription</a></li>
</ul>
</div>
此标头包含在常见的index.html.
sign in
页面到达时,我正在使用此通用标头。 我的问题是,当用户尝试输入sign in
页面时,他似乎也显示了home page
链接。
我需要在登录页面中同时隐藏home page link
和subscription link
。 如何隐藏这两个a
元素?
您可以为视图创建视图模型类,并将其分配给视图。 您可以通过将IsSignedIn
属性设置IsSignedIn
true / false,将模型从控制器传递到视图。
public class MyViewModel
{
bool IsSignedIn{get;set;}
}
@model MyViewModel
<div id="navigation">
<ul>
@if(Model.IsSignedIn)
{
<li><a href="/home.html?sign=true">Home</a></li>
}
<li><a href="/jobs.html">Tests</a></li>
<li><a href="/vps.html">Jobs1</a></li>
<li><a href="/ust.html">Jobs2</a></li>
@if(Model.IsSignedIn)
{
<li><a href="/sub.html">Subscription</a></li>
}
</ul>
</div>
正如@Rory提到的那样,您应该更喜欢在服务器端执行此操作。 但是,如果要在JQuery中执行此操作,请确保href具有唯一的ID。 假设Home链接的ID为'home',则可以使用$('#home').Hide()
以及类似的$('#home').Show()
使其可见。
Set id to that both home, subscription link and place the following jquery in the sign in page header.
jquery
------------------------------------
<script src="jquery.js"></script>
<script>
$(document).ready(function(e) {
$("#link1,#link2").hide();
});
</script>
html:
---------------------------
<div id="navigation">
<ul>
<li id="link1"><a href="/home.html?sign=true" >Home</a></li>
<li><a href="/jobs.html">Tests</a></li>
<li><a href="/vps.html">Jobs1</a></li>
<li><a href="/ust.html">Jobs2</a></li>
<li id="link2"><a href="/sub.html">Subscription</a></li>
</ul>
</div>
推荐的:
<div id="navigation">
<ul>
<?php if(isset($_SESSION)){
<li><a href="/home.html?sign=true">Home</a></li>
} ?>
<li><a href="/jobs.html">Tests</a></li>
<li><a href="/vps.html">Jobs1</a></li>
<li><a href="/ust.html">Jobs2</a></li>
<?php if(isset($_SESSION)){
<li><a href="/sub.html">Subscription</a></li>
} ?>
</ul>
</div>
完全不推荐伴侣。如果登录页面为examplesite.com/loginpage
则使用jQuery
(不推荐)
$(document).ready(function () {
if(window.location.href.indexOf("loginpage") > -1) { //Checks if the url has loginpage string
$('#navigation ul li:first').hide();
$('#navigation ul li:last').hide();
}
});
在客户端执行此操作不是一个好习惯。 您应该根据授权进行操作。
尽管您可以像这样在客户端执行此操作:
jQuery('#navigation ul li:first').hide();
jQuery('#navigation ul li:last').hide();
我的意思是我拥有用于签名用户名和其他details.Session的会话变量,因此使用该方法我如何隐藏链接详细信息– Sush
当您拥有会话变量时,可以使用它们来隐藏链接。 这可以使用if条件来实现。
仅当包含用户详细信息的会话变量不为空时,才显示链接。 您可以使用脚本。
if(session.username>0)
{
<a href="/home.html?sign=true">Home</a>
<a href="/sub.html">Subscription</a>
}
这是不正确的语法。 只是说明的一个例子。
在您的登录页面中添加一个新脚本,它应该按脚本的顺序排在最后,以便它可以覆盖其他这样的脚本
<head>
<script></script>
<script></scrtipt>
<script src="hide.js"></script>
</head>
现在编写代码以隐藏hide.js
的链接
$(document).ready(function()
{
$('#navigation ul').children('li').each(function()
{
if($(this).children('a').text()=='Home' || $(this).children('a').text()=='Subscriptions')
{
$(this).hide();
}
})
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.