2014-10-26 6 views
1

У меня есть N DIV. Каждый из них представляет собой физический компьютер. Каждый DIV может иметь N элементов UL. Каждый UL представляет собой тип программного обеспечения, установленный на сервере. И, наконец, каждый элемент UL содержит N элементов LI, представляющих данные, относящиеся к программному обеспечению (UL).Получение родительского элемента, не содержащего дочернего элемента с значением атрибута

Я хочу, чтобы выбрать сервер, который не содержит LI элемент с определенными данными (данные представлены в виде атрибута данных ИД LI элемента)

Я создал fiddle работать над этим и используя .not() (строка 3 в JavaScript окне):

Но он всегда возвращает оба сервера не имеет значения, какой вход при условии

$('.srv').not('li[data-id="2"]').each(function(){ 
    servers += $(this).attr('id') + ', '; 
}); 
+0

В скрипку я вижу только SRV1, что должно быть на выходе? –

+2

'$ ('. Srv'). Not (': has (li [data-id =" 2 "])'). Each (function() {...})'. – dfsq

ответ

3

Использование:

$(".srv:not(:has(li[data-id=2]))") 

Working Demo

+0

Он возвращает srv1, srv2, srv2. Ожидаемый результат - srv2 – eddyuk

+0

@eddyuk: проверьте обновленный ответ и демоверсию –

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