2014-02-05 2 views
1

Я пытаюсь обнаружить <li> элементов, которые имеют <ul> ребенка.как обнаружить li, что имеет ul ребенка

Это то, что я пытался, но он не работает:

$('ul.meta-menu li').each(function() { 
    if ($(this).has('ul')) { 
       addClass('par'); 
    } 
}); 
+2

вы пробовали '$ ('ул. meta-menu li '). has (' ul ') '? – tewathia

+1

+1 @tewathia: 'has' не возвращает логическое значение. Итак, '$ ('ul.meta-menu li'). Имеет ('ul'). AddClass ('par')' должно быть достаточно. Сделайте этот ответ, и у вас будет хотя бы один перелет.) – raina77ow

ответ

3

Попробуйте это:

$('ul.meta-menu li').each(function() { 
    if ($(this).find('ul').length){ 
     $(this).addClass('par'); 
    } 
}); 

DEMO here.

+0

работает, я просто удалил find.ul перед addclass, прежде чем я хочу добавить класс в li not ul. –

+0

Класс @LliveraKovacevic добавлен только в 'li'. Я обновил свой ответ. – Hiral

1

использованием child selector

$('ul.meta-menu li > ul').each(
    $(this).parent().addClass('par'); 
) 
1

Try:

$('ul.meta-menu li').has('ul').addClass('color'); 

ИЛИ

$('ul.meta-menu li ul').parent().addClass('bold'); 

Либо будет работать.

FIDDLE

+0

+1, я бы предложил добавить объяснение о 'has' (он уменьшает набор элементов, не просто делает boolcheck вроде' .is' - по-видимому, это путало OP). – raina77ow

0

Попробуйте это:

$(function(){ 
    $('ul.meta-menu').find('ul').addClass('par'); 
}); 

Example

Если вы хотите, чтобы стиль только родительский lisee this example

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