2015-08-07 1 views
-1

Я пытаюсь настроить навигацию с помощью Wordpress, и мне сложно передать выбранный класс, соответствующий заголовку страницы, на ссылку, созданную для меня wp. Как я могу ссылаться на конкретную ссылку $(this) и добавить класс?addClass 'selected' to link, которая соответствует названию страницы

<div class="container menu_nav"> 
    <ul class="grid_12"> 
     <?php 
      $args = array('menu' => 'main-menu', 'echo' => false); 
      $navMenu = wp_nav_menu($args); 
      $pageTitle = get_the_title(); 
      echo '<span id="page_title">'.$pageTitle.'</span>'; 
      $stripTags = strip_tags($navMenu, '<li><a>'); 
      echo $stripTags; 
     ?> 
    </ul> 
</div> 
jQuery(document).ready(function($){ 
    var nav = '.menu_nav ul li a'; 
    var linkTitle = $(nav).attr('title'); 
    var arr = []; 
    var pageTitle = document.getElementById('page_title'); 
    var pageAttr = pageTitle.innerHTML; 
    var linkClass = document.getElementsByClassName("menu-item"); 

    $(nav).each(function() { 
     arr.push($(this).text()) 
    }); 

    for (var i = 0; i < arr.length; i++) { 
     if (arr[i] == pageAttr) { 
      $(linkClass).addClass('selected'); 
     } else { 
      $(linkClass).removeClass('selected'); 
     } 
    } 
    console.log(arr.join()); 
    console.log(linkTitle,pageAttr); 
}); 
+0

Просьба разъяснить вашу проблему. Неясно – dpanshu

+0

Привет, Рори, если вы проверите цикл for прямо сейчас, я передаю addClass и removeClass на каждую ссылку навигации, когда он найдет заголовок страницы, соответствующий названию ссылки. Как добавить addClass и removeClass в отдельный элемент li, а не все элементы li одновременно. Я также изменил свой массив, что теперь он получает все названия ссылок в нем: $ (nav) .each (function() { \t \t arr.push ($ (this) .attr ('title')); \t}); –

ответ

1

Вы должны сделать это в одном цикле

$(nav).each(function() { 
     arr.push($(this).text()) ; 
     if ($(this).text() == pageAttr) { 
       $(this).addCass('selected'); 
      } 
}); 
+0

Большое вам спасибо - отлично работает :) Я добавил класс к его родительскому –

-1

вы удаляете класс «выбранный» от каждого элемента возвращается в linkClass каждый раз, когда вы найдете запись в обр который не соответствует вашему названию страницы и добавляет его в каждый элемент, когда вы его найдете.

Попробуйте следующее:

jQuery(document).ready(function($){ 
    var nav=$('.menu_nav ul li a'); 
    var pageTitle = $('page_title').text(); 

    nav.removeClass('selected'); 
    nav.each(function(item) { 
     if ($(item).text().toLowerCase() === pageTitle.toLowerCase()) 
      $(item).addClass('selected'); 
    }); 
}); 
+0

Thats great Мне не нужно толкать элементы в массиве здесь. спасибо –