2011-02-10 8 views
4

У меня есть меню, но я хочу выделить текущую ссылку с jquery.Выделить текущий url в меню с jquery

var loc = window.location; 
    var lochref = $("#topNavigation li a").attr("href"); 

    if(lochref == loc){ 
     $('#topNavigation li a').addClass('currenthover'); 
    } 

С помощью вышеуказанного скрипта никаких изменений в классе «а» нет. Как я могу сделать это с помощью jquery? Заранее спасибо

ответ

3

Прежде всего: это то, что вам следует рассмотреть на стороне сервера. Это намного, намного, намного проще и надежнее.

Ваш код сравнивает только href первой ссылки, так как attr возвращает значение свойства первой ссылки. Вам нужно перебрать ссылки, чтобы найти правильный.

var loc = window.location.href; 
$("#topNavigation li a").each(function() { 
    if(this.href == loc) { 
    $(this).addClass('currenthover'); 
    } 
}); 
1

Я бы либо лог loc и lochref в консоли, либо сделал предупреждение, чтобы узнать, что это за значения, это может быть так же просто, как пропустить конечную косую черту. Кроме этого, код действителен.

http://jsfiddle.net/loktar/gjZVK/3/

хит запустить и второе предупреждение должно соответствовать, и ссылка будет красным.

0

Вы пропустили .href от объекта window.location. Вам необходимо сменить первую строчку на:

+0

Я нашел это в течение 1 минуты, используя firebug и выполнив «console.log (window.location)» в javascript, как сказал Локтар. Использование таких инструментов, как firebug, значительно облегчает разработку и отладку кода. – Neil

1

Я всегда использовал jQuery, чтобы выделить текущий пункт меню. Попробуйте следующее:

$(function() { 
    var loc = window.location; 
    var pathName = loc.pathname.substring(loc.pathname.lastIndexOf('/') + 1); 
    $('[href$="' + pathName+ '"]').parent().addClass("active"); 
}); 
Смежные вопросы