2011-02-09 8 views
1

私のウェブサイトのナビゲーションには、現在のページへのリンクをすべてカラーにしたいと考えています。
現在のページを指しているリンクを見つけるにはどうすればよいですか?
リンクのhrefは "../index.php"のようですが、現在のページはhttp://mysite.myserver.com/index.phpです。このページにリンクしていますか?

これは動作するように望んでいない私の現在のアプローチです:文書の準備ができている

String.prototype.endsWith = function(str) { return (this.match(str + "$") == str); } 
String.prototype.startsWith = function(str) { return (this.match("^" + str) == str) } 
String.prototype.trim = function(sec) 
{ 
    var res = this; 

    while (res.startWith(sec)) 
    { 
     res = res.substr(sec.length); 
    } 

    while (res.endsWith(sec)) 
    { 
     res = res.substr(0, res.length - sec.length); 
    } 

    return res; 
} 

そして、:

$("a").each(
    function (i) 
    { 
     if (window.location.pathname.endsWith($(this).attr("href").trim("."))) 
     { 
      $(this).addClass("thispage"); 
     } 
    } 
); 

そして、はい、私はこの家に色かもしれません知っていますリンク(../index.php - すべてのページがそれで終わるので!)。だから私はより良い方法が必要な理由です...

答えて

2
$("a[href]").filter(function() { 
    return window.location.pathname === this.pathname; 
}).addClass("thispage"); 

window.locationのがディレクトリである場合、あなたはindex.phpで終わる文字列を作成することができます。

var win = window.location.pathname; 
if(win.slice(-1) === '/') { 
    win += 'index.php'; 
} 
$("a[href]").filter(function() { 
    return win === this.pathname; 
}).addClass("thispage"); 
+0

ありがとう!できます! – Vercas

+0

@Vercas:ようこそ。 – user113716

+0

お待ちください、私はいくつかの助けが必要です...たとえば、リンクが "../index.php"で、現在のURLが "http://mysite.myserver.com/"であれば、実際にはウェブページは同じです! – Vercas

1

これはjavascriptで行う必要がありますか?あなたのページ生成コードでクラスを設定する方が簡単だと思われます。

+0

私は多くのページを持っていますが、将来ヘッダーに変更を加えることがあります。 HTMLをコピーして貼り付けるときに手動ですべてのタグを変更するのはちょっと難しいでしょうね。 – Vercas

+0

先を計画している場合は、そうではありません。そして、コピーして貼り付けるべきではありません。代わりに、選択したテンプレートエンジンによって提供されるhtml生成および合成メカニズムを使用する必要があります。 – ykaganovich

+0

テンプレートエンジン?それは何ですか? – Vercas

0

a:visitedクラスをお試しください。これにより、訪問したタグの色を指定することができます。あなたのコメントについて http://www.w3.org/TR/CSS2/selector.html#link-pseudo-classes

+0

私は現在のページだけを色付けしたいのですが、訪問したすべてのページではありません! – Vercas

関連する問題