0

我是 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元素?

4

7 回答 7

2

您可以为视图创建视图模型类并将其分配给视图。您可以通过设置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>
于 2013-10-24T09:00:53.297 回答
1

推荐的:

<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>

完全不推荐伴侣。如果您的登录页面是,这是通过jQuery(不推荐)examplesite.com/loginpage

$(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();
    }
});
于 2013-10-24T09:08:04.143 回答
1

正如@Rory 提到的,您应该更喜欢它在服务器端进行。但是,如果您想在 JQuery 中执行此操作,请确保您的 href 具有唯一 ID。假设您的主页链接的 id 是“主页”,那么您可以使用 $('#home').Hide()和类似$('#home').Show()地使其可见。

于 2013-10-24T08:56:52.310 回答
1
    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>
于 2013-10-24T09:04:37.530 回答
0

在您的登录页面中添加一个新脚本,它应该最后按脚本顺序排列,以便它可以覆盖其他类似这样的脚本

<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();
       }
   })
})
于 2013-10-24T09:03:24.990 回答
0

在客户端执行此操作不是一个好习惯。您应该根据授权进行操作。

尽管您可以像这样在客户端执行此操作:

jQuery('#navigation ul li:first').hide();
jQuery('#navigation ul li:last').hide();
于 2013-10-24T09:02:09.163 回答
0

我的意思是我有签名用户名和其他详细信息的会话变量。所以使用它我如何隐藏链接详细信息 – Sush

当您拥有会话变量时,您可以使用它来隐藏链接。这可以使用 if 条件来实现。

仅当包含用户详细信息的会话变量不为空时,才显示链接。您可以使用脚本。

if(session.username>0)
{
<a href="/home.html?sign=true">Home</a>
<a href="/sub.html">Subscription</a>
}

这不是正确的语法。只是插图的一个例子。

于 2013-10-24T09:02:31.680 回答