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 linksubscription linkサインイン ページで非表示にする必要があります。aこれら 2 つの要素を非表示にするにはどうすればよいですか?

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んmate.これは、ログインページが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」であると仮定する $('#home').Hide()と、同様$('#home').Show()に and を使用して表示することができます。

于 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

クライアント側でそれを行うのは良い習慣ではありません。認可に基づいて行う必要があります。

次のようにクライアント側で実行できますが:

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 に答える
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 に答える