2012-06-15 6 views
0

У меня есть такой HTML фрагмент кода:JQuery функция документа вопрос

<ul class="myClass"> 
    <li><a href="url1.html">first link</a></li> 
    <li><a href="url2.html">second link</a></li> 
    <li><a href="url2.html">third link</a></li> 
    <li><a href="url3.html">fourth link</a></li> 
</ul> 

Идея заключается в том, что, когда я нажимаю на ссылку, он должен написать на нажимается ссылка строку следующего объекта: класс = «активный». Например, если мы имеем

<li><a href="url1.html">first link</a></li>` 

и жму его, функция JQuery должна изменить его на:

<li><a class="active" href="url1.html">first link</a></li> 

Но моя функция JQuery действительно не работает. Я очень признателен, если вы сможете мне помочь. Вот источник функции JQuery:

$(document).ready(function(){ 
    var currentUrl = document.location.pathname; 
    $('#myClass').each(function() { 
     if (currentUrl == $(this).children('a').attr('href')) { 
      $(this).children('a').addClass('active'); 
     } 
    }); 
}); 

UPDATE Я положил войти console.log(currentUrl +"=="+ $(this).children('a').attr('href')); и он сказал, что состояние не определено. Я думаю, что условие «если» не выполнено, потому что я положил и еще условие и поместил и alert там, так что любое нажатие предупреждений и if условие никогда не выполняется.

+1

Вам нужно быть более конкретным, чем «на самом деле не работает» - что происходит, что не должно? –

+0

Вы посмотрели, что это возвращает: 'console.log (currentUrl +" == "+ $ (this) .children ('a'). Attr ('href'));' – epascarello

+0

@AnthonyGrist, когда я нажимаю ссылку , свойство 'class = "active"' не установлено –

ответ

1

То, что вы пытаетесь достичь, может быть в скором времени написано так:

$(document).ready(function(){   
    var curl = document.location.pathname; //current url 
    curl = curl.substr(curl.lastIndexOf('/')+1); 
    $('.myClass a[href="'+curl+'"]').addClass('active'); 
}); 
+0

@ Engineer не работает –

+0

@JohnSmith Вероятно, это потому, что такого элемента 'a' нет, атрибут' href' равен 'document.location.pathname'. Возможно, в 'document.location.pathname' есть дополнительные символы, которые необходимо удалить, прежде чем перейти к' jquery selector' – Engineer

+0

@ Engineer. Я предупредил 'document.location.pathname', и он предупредил меня о моих URL-адресах, которые я нажал. –

2

#myClassid селектор, а не селектор классов. Вы хотите .myClass

children() будет только выбрать ребенок (в li элементах), которые не имеют href атрибутов и не будет соответствовать a.

Вы хотите, чтобы #myClass был .myClass > li, поэтому вы перебираете элементы списка.

+0

Я не очень хорошо разбираюсь в jquery, так что я действительно не могу переопределить, как это должно быть –

+0

@John: Вот для какой документации: http://api.jquery.com/category/selectors/;) –

-1

Используйте jQuery click event

$(document).ready(function(){ 
    $('.myClass a').click(function() { 
     $(this).addClass('active'); 
    }); 
}); 

Этот ответ адреса ваш вопрос:

«Идея заключается в том что, когда я нажимаю ссылку, она должна записать в следующую строку свойств следующую строку: class = "active". Например, если у нас есть

<li><a href="url1.html">first link</a></li>` 

и жму его, функция JQuery должна изменить его на:

<li><a class="active" href="url1.html">first link</a></li> 

"

Я думаю, у вас другая проблема, но это было не ясно из вашего вопроса.

+0

@ Josh Noe у вас есть ошибка и не помогло –

+0

@JohnSmith Исправлена ​​ошибка с отсутствием скобок –

Смежные вопросы