#jquery #addclass
#jquery #addclass
Вопрос:
<script>
$("ul#sol_menu li a").addClass(function()) {
var current_page = document.location.href;
if ($(this).attr.("href").match(current_page)) {
$(this).addClass('highlight');
};
});
</script>
Что в этом плохого?
Комментарии:
1. В каждой отдельной строке (кроме одной) есть несколько ошибок. Вам необходимо изучить синтаксис Javascript и jQuery.
2. Вы знаете, что в браузерах есть консоль ошибок, верно?
:)
3. @SLaks, какая именно,
</script>
строка? O.o4. @David: в
var currentPage
Ответ №1:
Я полагаю, что это может быть тем, к чему вы стремились…
И, как указал СЛакс, ваш синтаксис (в данном случае) немного ужасен…
<script>
$(document).ready(function(){
var current_page = document.location.href;
$("ul#sol_menu li a").each(function(){
if ($(this).attr('href') == current_page) {
$(this).addClass('highlight');
}
});
});
</script>
Итак, чтобы ответить на ваш вопрос… следующее было неправильным в вашем коде:
- В зависимости от того, был ли ваш тег script до или после вашего элемента ul, вам нужно использовать $ (document).готовая функция
- Вы неправильно использовали обратный вызов addClass…
- У вас была дополнительная скобка при обратном вызове addClass «addClass(function()) {» должно было быть «addClass(function() {«
- Нет метода .match, подобного тому, который вы использовали…
- Здесь произошла синтаксическая ошибка: ‘.attr.(«href»)’; нет точки после ‘.attr’
Надеюсь, это ответ на ваш вопрос.
Ответ №2:
Я думаю, это то, что вы пытаетесь сделать, с комментариями, так что, надеюсь, вы узнаете что-нибудь о Javascript / jQuery:
// when DOM is ready
$(function(){
// cache current URL
var current_page = document.location.href;
// use .each method to check link hrefs against current location
$("ul#sol_menu li a").each(function () {
// if this link is for the current page, highlight it
if (current_page.indexOf(this.href) >= 0) {
$(this).addClass('highlight');
};
});
});