2011-01-17 4 views
39
<ul><li><div><div><span id="thisid"></span></div></div></li></ul> 

$('#thisid').parent('li'); 

что, очевидно, не работает, но как я могу захватить элемент li? Я не хочу использовать:JQuery, найти родителя

$('#this').parent().parent().parent(); 

Я не хочу использовать его, потому что это может случиться так, что есть только один элемент DIV, вместо двух. В этом случае я бы взял элемент ul вместо li.

ответ

76
$('#thisid').parents('li'); 
//    ^plural! 

Обратите внимание, что если вы хотите только первый <li> элемент в родословной, вы должны использовать closest():

$('#thisid').closest('li'); 

// `closest()` is equivalent to (but performs better than) 
$('#thisid').parents('li').eq(0); 
$('#thisid').parents('li').first(); 
+2

Все четыре примера являются большими решениями. – Moses

+0

Просто хотел прояснить, что единственный «parent()» * - это действительный вызов функции; он просто не делает то, о чем нуждается вопроситель. – mwardm

1

Простой, используйте parents()

var parents = $("#thisid").parents('li'); 
2
$('#thisid').parents('li:eq(0)'); 

Если это сделать. Это даст вам первый (:eq(0)) родительский элемент, который соответствует тегу, который вы ищете.

6
$('#thisid').parents('li') 

или если вы хотите только первые один:

$('#thisid').closest('li') 
0

Вы можете на самом деле хотите использовать $("#thisid").closest('li'). Это пересекает дерево DOM из выбранного узла и возвращает первого соответствующего предка, тогда как .parents() перемещается от родительского узла и возвращает все узлы-предки, соответствующие этому фильтру. См. here для получения дополнительной информации.

1

Я предпочитаю «ближайший», чем «родители».

Родители перемещаются по дереву DOM к корневому элементу документа, добавляя каждый элемент предка во временную коллекцию; он затем фильтрует эту коллекцию на основе селектора, если он поставляется.

где

Ближайшие путешествия вверх по дереву DOM, пока не найдет совпадение для прилагаемого селектора.

Самое важное то, что они дают в результате:

Praents: объект, возвращаемый JQuery содержит ноль или более элементов для каждого элемента в исходном наборе, в обратном порядке документа.

Ближайшие: объект, возвращаемый JQuery содержит ноль или один элемент для каждого элемента в исходном наборе, в документе порядка

$('#thisid').closest('li'); 

Follow this Link

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