2016-03-03 2 views
0

Во-первых, почему я всегда получаю downvoted, когда я спрашиваю об этом вопросе? Вот вопрос.Использование jQuery для установки активного класса в PHP

У меня есть тег PHP в a href.

Вот мой код:

<nav class="main-navi"> 
<ul> 
    <li> 
     <a href="?r=site/index" > 
      Home 
      <span class="dot"></span> 
      <span class="corner"></span> 
     </a> 
    </li> 
    <li> 
     <a href="?r=site/fotoportfolio"> 
      Portfolio 
      <span class="dot"></span> 
      <span class="corner"></span> 
     </a> 
    </li> 
    <li> 
     <a href="?r=site/fotoabout"> 
      About 
      <span class="dot"></span> 
      <span class="corner"></span> 
     </a> 
    </li> 

    <li> 
     <a href="?r=site/fotoservice"> 
      services 
      <span class="dot"></span> 
      <span class="corner"></span> 
     </a> 
    </li> 
    <li> 
     <a href="?r=site/fotoblog"> 
      Blog 
      <span class="dot"></span> 
      <span class="corner"></span> 
     </a> 
    </li> 
    <li> 
     <a href="?r=site/fotocontact"> 
      contacts 
      <span class="dot"></span> 
      <span class="corner"></span> 
     </a> 
    </li> 
</ul> 
<em id="showHideMenu" class="show-hide-menu fa fa-bars" href="#"></em></nav> 

И есть 2 сценариев:

<script> 
    var loc = window.location.href; 
    $('.main-navi ul li a').each(function() { 
     var status = loc.indexOf($(this).attr('href')) > -1; 
     $(this).toggleClass('active', status); 
    }); 
</script> 
<script> 
    console.log(location.href); 
</script> 

Первая функция скрипта дать active класс, когда я загрузить страницу, а второй скрипт только для знать местоположение ссылки.

Во втором сценарии, у меня есть выход в консоли, как это:

?r=site/index 

А Ссылка:

localhost/blablabla/frontend/web/?r=site/index 

Проблема: Я не имею класс active в навигационной панели всякий раз, когда я загружаю страницу.

Пример: Если я загружаю индекс, «home» не получает класс active. Что я делаю не так? Благодарю.

+0

этот тег скрипта в ''? Если это так, элементы еще не существуют ... wrap в '$ (function() {/ * code * /})'. Или переместите это ниже html, которое оно ссылается на – charlietfl

+0

. Также обратите внимание на любые ошибки в консоли браузера – charlietfl

+0

Я поставил скрипт перед тегом тега тела sir. извините, вам нужно сделать это $ (document) .ready (function() {var loc = window.location.href; $ ('. main-navi ul li a'). each (function() { var status = loc.indexOf ($ (this) .attr ('href'))> -1; $ (this) .toggleClass ('active', status); });}); – antonscie

ответ

0

ToogleClass() не работает должным образом. Измените его на:

if (status) { 
    $(this).addClass('active'); 
} 

https://jsbin.com/beyinaxoka/edit?html,js,console,output

+0

сэр, если я изменю var loc, как вы. мне нужно создать 6 var? потому что в вашем коде в var loc вы меняете его на? r = site/index – antonscie

+0

Нет, совсем нет. Я просто изменил значение, чтобы доказать концепцию. В сценарии реального мира вы бы установили, что у вас есть выше. –

0

Я исправил ошибку. Мне нужно было добавить $(document).ready(function() { });, и это сработало как шарм.

+0

Конго! : D Заработайте значок Scholar :) –

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