2014-11-30 4 views
1

Мне нужна помощь с некоторым кодом jquery, чтобы проверить, имеет ли класс span класс. Если у него нет класса, добавьте в него класс customtab. Как это сделать в jquery?JQuery - Как проверить, имеет ли класс span класс и добавляет класс, если он не существует

Вот пример меню html.

<div class="menu"> 
    <ul> 
     <li><a class="user_menu_link" href="#"><span class="menu1">Menu Item 1</span></a><li> 
     <li><a class="user_menu_link" href="#"><span class="menu2">Menu Item 2</span></a></li> 
     <li><a class="user_menu_link" href="#"><span class="menu3">Menu Item 3</span></a></li> 
     <li><a class="user_menu_link" href="#"><span class="menu4">Menu Item 4</span></a></li> 
    <li><a href="#"><span>Menu Item 5</span></a></li> 
    </ul> 
</div> 

Вот код, который я пытаюсь использовать, но не работает.

$('ul a').each(function() { 
    if ($(this).attr('class') == "") { 
    $(this).find('span').addClass("customtab"); 
    } 
}); 

Я был в состоянии использовать этот код, чтобы заставить его работать.

$('ul a').each(function() { 
    if ($(this).attr('class') === undefined) { 
    $(this).find('span').addClass("customtab"); 
    } 
}); 

ответ

3

Какой класс вы проверяете и когда, например? по щелчку, когда страница загружается, парить и т.д.

Чтобы проверить, есть hasClass метод:

// $(this) being the element you are checking for the class 
// this could be inside a click function for example 
if ($(this).hasClass('menu1')) { 
    $(this).addClass('customtab'); 
} 

Update

Чтобы проверить, не class атрибута, попробуйте следующее:

if ($(this).attr('class') === undefined) { 
    $(this).addClass('customtab'); 
} 

Если вы не знаете, что $(this) тогда вы можете найти элемент по перекручивание через элементы:

$('li a.user_menu_link span').each(function() { 
    if ($(this).attr('class') === undefined) { 
     $(this).addClass('customtab'); 
    } 
}); 

http://jsfiddle.net/992g694f/

Fiddle с фиксированным HTML - http://jsfiddle.net/992g694f/1/

Update 2

$('ul a').each(function() { 
    if($(this).attr('class') === undefined){  
     $(this).find('span').addClass("customtab"); 
    } 
}); 
+0

Я хочу проверить, имеет ли класс span класс. В html вы увидите, что пункт меню 5 не имеет класса span. Я хочу, чтобы код нашел элемент меню, который не имеет класса и добавляет класс customtab. Я хочу, чтобы он добавлял класс в элемент меню, который не имеет класса. – James30263

+0

Я пробовал выше, но добавил класс customtab для всех диапазонов – James30263

+0

@ James30263 вы уверены? Я создал скрипку и, похоже, работает http://jsfiddle.net/992g694f/. По какой-то причине есть лишний 'li', в html должна быть опечатка, но я не вижу ее. – martincarlin87

0

Try:

$(".menu a span").filter(function() { 
    return this.className == ''; 
}).addClass('customtab'); 
Смежные вопросы