2014-12-04 4 views
0

Имея некоторые проблемы с методами JQuery - возможно усложнять вещи ...Найти, если текущий класс содержит слово, а затем добавить новый класс для тех Ли - JQuery

Что мне нужно найти, если какие-либо из классов Li элементов содержит слово «текущий», тогда, если они это сделают, добавьте к ним слово «активный».

Я изо всех сил пытаюсь добавить слово в конец текущего класса. Например:

Markup:

<div class="menu-navigation-container"> 
    <ul> 
     <li class="current_page_item menu-item-8787"><a href="http://www.cornermag.com/mag/" style="font-size: 1.6rem;"><span>The Magazine</span></a> 
     </li> 
      <li class="menu-item menu-item-type-post_type"><a href="http://www.cornermag.com/snapped/" style="font-size: 1.6rem;"><span>Snapped</span></a> 
      </li> 
    </ul> 
</div> 

JQuery:

$(document).ready(function() { 
    var classNames = $('.menu-navigation-container ul li').attr("class").match(/[\w-]*current[\w-]*/g); 
    $(classNames).each(function() { 
     $(this).addClass("active"); 
    }); 
}); 

Запуск classnames; в консоли производит только строку - Я хочу, чтобы ссылаться на Li elemens, которые имеют слово «current» в своих именах классов, затем добавьте слово «активный» в конце.

Могу ли я сделать это с помощью jQuery's attribute contains selector?

+0

Что случилось с выходом прямо к нему с селектором? например '.menu-navigation-container ul li [class * =" current "]' –

+0

Почему вы не проверяете конкретный класс вместо 'current_page_item' ??? –

+0

В вашем матче найдены все строки, которые имеют 'current'. Почему теперь не проходят через те же элементы снова, и если они имеют данный класс, добавьте активный. – eithed

ответ

3

Просто так:

$(document).ready(function() { 
    $('.menu-navigation-container ul li[class*=current]').addClass('active'); 
}); 
+0

Не обязательно то же самое, что и регулярное выражение, используемое OP. Это может быть все еще нормально, в зависимости от того, хочет ли OP найти «blackcurrent-class» – eithed

+0

Он по-прежнему будет соответствовать. * означает, что класс содержит это слово где-то. –

+0

О, да - я неправильно читаю регулярное выражение OPs, моя ошибка :) – eithed

0

Попробуйте

$(document).ready(function() { 


    $('.menu-navigation-container ul li').each(function(){ 

    if ($(this).is(".current")) 
     { 
      $(this).addClass("active"); 
     } 

    }) 




    }); 
Смежные вопросы