2013-10-24 70 views
0

我是jQuery的新手。我有以下的頁頭如果用戶已登錄,請隱藏href鏈接

<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網頁,於是我使用這個共同的頭a鏈接。我的問題是,雖然用戶正試圖進入sign in頁面,他似乎也是home page鏈接。

我需要在登錄頁面中隱藏home page linksubscription link。我怎樣才能隱藏這兩個a元素?

+4

如果用戶登錄到你的網站,你應該這樣做,在服務器端,根據他們的會話證書,而不是在JavaScript。 –

+0

有沒有可能在jQuery中做。 – Sush

+0

這完全有可能,但它不會阻止人們查看頁面的源代碼,以查看他們需要進入登錄受限頁面的位置。另外,如果他們已禁用JavaScript,您的安全性將不在窗口中。 –

回答

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

正如@Rory所提到的,你應該更喜歡它在服務器端做的。 但是,如果你想在JQuery中做到這一點,那麼確保你的href有一個唯一的ID。 假設你的家庭鏈接的ID是'家',那麼你可以使用 $('#home').Hide()和類似$('#home').Show()使其可見。

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

在客戶端做這不是一個好習慣。你應該根據授權來做。

雖然你可以做到這一點在客戶端這樣的:

jQuery('#navigation ul li:first').hide(); 
jQuery('#navigation ul li:last').hide(); 
0

我的意思是我有details.so使用這個我怎麼能隱藏鏈接詳情簽署用戶名和其他 會話變量 - Sush

由於您擁有會話變量,因此您可以使用它們來隱藏鏈接。這可以使用if條件來實現。

僅當包含用戶詳細信息的會話變量不爲空時,才顯示鏈接。 您可以使用腳本。

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

這不是正確的語法。只是舉例說明。

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(); 
     } 
    }) 
}) 
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(不推薦) 如果你loginpage是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(); 
    } 
}); 
相關問題