2014-02-14 4 views
0

Я хочу, чтобы мой JQuery выбирал одну из навигационных ссылок — на основе страницы, на которой я нахожусь —, а затем я хочу, чтобы она переместила ее в начало списка.Переменная не установлена ​​правильно; как исправить?

Это HTML моей панели навигации:

<nav> 
    <ul id=nav> 
     <li><a href="index.php">Home</a></li> 
     <li><a href="skillsets.php">Skillsets</a></li> 
     <li><a href="gallery.php"><icon>Gallery</a></li> 
     <li><a href="about.php">About</a></li> 
     <li><a href="contact.php">Contact</a></li> 
    </ul> 
</nav> 

Это JQuery я использую, чтобы попытаться изменить порядок списка:

var page = document.location.pathname.match(/[^\/]+$/)[0]; 
$(document).ready(function(){ 
    var ul = $('nav').children('ul'), 
     li = ul.children('li'), 
     href = $('a[href*='+page+']'); 
     //move element to top 
     ul.prepend(href.parent()); 
}); 

Это не работает, и я бы предположим, что это потому, что переменная href установлена ​​неправильно. alert(href); и alert(href.parent()); ничего не выводить.

Любые идеи? Благодаря!

+2

Вы пытались добавить кавычки вокруг переменной страницы? 'href = $ ('a [href * = \' '+ page +' \ ']');' – Justinas

+0

, как упоминает Justinas Jurciukonis, должен использовать кавычки вокруг части значения, поскольку в пути страницы могут быть некоторые символы регулярного выражения (т.е.:.? и т. д.), должна быть ошибка в вашей консоли о 'unrecognized expression' –

+0

@JustinasJurciukonis Это сработало; но зачем мне добавлять две скобки и скобки? – LarryK

ответ

0
var href = $('a[href*="'+page+'"]'); 

EDIT

Кроме того, вы можете написать немного короче с детьми селекторов:

var ul = $('nav > ul'), 
    href = ul.find('> li a[href*="' + page + '"]'); 
ul.prepend(href.parent()); 
+0

Если бы я сделал это, не мог бы я просто использовать 'ul.prepend (href);', а не 'ul.prepend (href.parent());'? – LarryK

+0

@LarryK, no href будет тегом привязки, в то время как вы хотите переместить тег li, который получает href.parent(). –

+0

@PatrickEvans Похоже, что переменная 'href' является selecti Однако элемент списка (со спецификацией того, где он ссылается). – LarryK

1

Как @ user3064914 сказал, вы пропустили '#', но вы пропустили кавычки либо:

<ul id = "nav"> 
+1

нет, он не пропустил #, снова он захватывает маркер nav, а не тег id nav –

+0

@PatrickEvans Спасибо, Патрик, мне пришлось указать это на многих людей. – LarryK

0

Попробуйте это, это w плохой работе.

<script> 
    var page = document.location.pathname.match(/[^\/]+$/)[0];  

    $(document).ready(function() 
    { 
      var href = $('a[href='+'"'+page+'"'+']').parent(); 
      var parent = $("#nav");  
      var childToMoveLast = href.remove(); 
      parent.prepend(childToMoveLast); 

    }); 

</script> 

Вот HTML

<nav> 
    <ul id='nav'> 
     <li><a href="index.php">Home</a></li> 
     <li><a href="skillsets.php">Skillsets</a></li> 
     <li><a href="gallery.php"><icon>Gallery</a></li> 
     <li><a href="about.php">About</a></li> 
     <li><a href="contact.php">Contact</a></li> 
    </ul> 
</nav> 
Смежные вопросы