2015-03-03 1 views
1

Вот мое меню навигации:Нажмите функцию Li тег не работает с HREF, кроме #


У меня есть зеленый лист, показывающий, когда литий нажат, JQuery код, чтобы это произошло:

$(document).ready(function(){ 

    $("#nav li").click(function(event) { 
    event.preventDefault(); 
    $(this).addClass('greenLeaf').siblings('li').removeClass('greenLeaf'); 

}); 
}); 


Теперь проблема, когда вместо "index.html", у меня есть # - работает как шарм, если аль чернила вставлены, мне нужно использовать event.preventDefault, что также препятствует браузеру следовать ссылке, что, очевидно, не совсем то, что мне нужно. Любой метод решения этой проблемы? Я уверен, что это легко исправить, но я не могу понять это ...

+0

Um, если браузер следует по ссылке, то ваш 'addClass' бесполезно. .. Загружается следующая страница? – tymeJV

+0

Что вы имеете в виду, если вставляется ссылка? Являются ли ссылки динамически добавлены на стороне клиента в некотором роде? – eyegropram

+0

Итак, что вы хотите, когда кто-то нажимает на ссылку? Вы хотите, чтобы лист появлялся, или вы хотите использовать ссылку по умолчанию? –

ответ

2

Затем вы хотите правило CSS:

#nav li a:visited{ 
    /* Add greenLeaf class code here */ 
} 

Как обсуждалось в комментариях, вы хотите использовать CSS которые вы используете для .greenLeaf внутри селектора: visited.

+0

Спасибо, есть ли другой способ использования jQuery вместо CSS? –

+0

Поскольку вы будете перемещаться от страницы, вам понадобится статическое правило, которое будет сохранено на разных загрузках страниц. jQuery - это javascript-прогон на стороне клиента. Если вы хотите, вы можете использовать localStorage для хранения значения, которое было нажата на ссылку X, а затем на каждой загрузке страницы вы проверили localStorage и задали класс через jQuery. Однако в старых браузерах, которые не поддерживают localStorage, вам понадобится файл cookie. Я бы сказал, что вариант CSS лучше. Плюс он может быть кэширован и будет самым быстрым методом. – eyegropram

+0

Спасибо за объяснение! –

0

, как я понимаю, вы пытаетесь пометить текущую страницу в меню

так что его что-то вроде этого:

$(document).ready(function(){ 
    $("#nav a").each(function(){ 
    if ($(this).attr("href") == window.location.pathname){ 
     $(this).addClass("greenLeaf"); 
    } 
    }); 
}); 
+0

Это применит только лист рядом с текущей ссылкой, на которой была страница. Это не будет отслеживать, которые были нажаты/посещены. – eyegropram

+0

как я понимаю, это то, что он пытается сделать - отметьте текущую страницу в меню –