2011-02-09 4 views
1

Для навигации по моему сайту я хочу дать всем ссылкам на текущую страницу цвет.
Как найти ссылки, которые ссылаются на текущую страницу?
Ссылка href link похожа на «../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"); 
     } 
    } 
); 

И да, я знаю, это может окрасить дом link (../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

@ Веркас: Добро пожаловать. – user113716

+0

Подождите, мне нужна помощь ... Если, например, ссылка «../index.php», а текущий URL-адрес «http://mysite.myserver.com/», она не удастся, даже если веб-страницы на самом деле одинаковы! – Vercas

1

Это должно быть сделано в javascript? Кажется, было бы проще установить класс в коде генерации страницы.

+0

У меня будет много страниц, и я могу внести изменения в заголовок в будущем. Было бы больно в заднице менять все теги вручную при копировании и вставке HTML, так? – Vercas

+0

Не должно быть, если вы планируете заранее. И вы не должны много копировать и вставлять. Вместо этого вы должны использовать механизмы генерации и компоновки html, предоставляемые вашим шаблоном. – ykaganovich

+0

Шаблон двигателя? Что это? – Vercas