2014-10-14 2 views
0

Я пытаюсь добавить класс динамически в меню, которое у меня есть на моем веб-сайте, который строится следующим образом.Addclass to Menu JQuery

<nav> 
    <ul id="" class="mini-menu"> 
     <li><a href="home">Home</a></li> 
     <li><a href="over-jellyfish">Over Jellyfish</a></li> 
     <li><a href="blog">Blog</a></li> 
     <li class="contact"><a href="contact">Contact</a></li> 
    </ul> 
    <ul class="hoofd-menu"> 
     <li class="websites"><a id="dekstop_menu" href="websites"><i class="fa fa-desktop text-center"></i>Websites</a></li> 
     <li class="support"><a id="support_menu" href="support"><i class="fa fa-comment-o text-center"></i>Support</a></li> 
    </ul> 
</nav> 

с JQuery Я пытаюсь добавить класс к мини-меню, выполнив следующие шаги.

jQuery(function() { 
    var str = window.location.pathname; 
    var page = str.split("/"); 
    p=page[2]; 
    var active = p=page[2]; 
    console.log(active); 

    jQuery('.mini-menu a').each(function() { 
     if (jQuery(this).attr('href') === active) { 
      jQuery(this).addClass('active'); 
     } 
    }); 
}); 

Однако я, кажется, что-то пропустил, потому что в html ничего не появляется, добавляя класс к ссылке. Я упускаю из виду тот факт, что ссылка не является прямым ребенком класса mini-nav? Если да, то как это исправить?

+0

Вы можете создать jsfiddle и объяснить свой вопрос? – Murtaza

+0

извините, опечатка .. это мини-меню .. исправлено это – Dorvalla

+0

Does console.log() возвращает правильную строку? – Anton

ответ

1

Вы можете попробовать это:

jQuery(function() { 
    var str = window.location.pathname; 
    var page = str.split("/"); 
    p=page[2]; 
    var active = p=page[2]; 
    console.log(active); 

    jQuery('.mini-menu a').each(function() { 
     (function (self) { 
     if (jQuery(self).attr('href') === active) { 
      jQuery(self).addClass('active'); 
     } 
     })(this); 
    }); 
}); 
+0

Спасибо. Это то, что я искал. Я добавляю класс сейчас :) Я соглашусь, когда смогу. – Dorvalla

+1

Это из-за "каждого". Когда вы используете «каждый» и что хотите что-то изменить: создайте такую ​​функцию, как я сделал, чтобы скопировать текущие переменные внутри. Если вы этого не сделаете, «этот» всегда будет равен последнему элементу, когда вы попытаетесь что-то изменить. –

+0

ах ладно, спасибо за объяснение. – Dorvalla