выбор корневого элемента в jQuery

Дважды щелкните по jBoss значку сервера в представлении сервера. Окно открывается со свернутым “Timeout”. Нажмите на стрелку и увеличьте время начала.

7
задан Sqoo 23 November 2012 в 15:56
поделиться

5 ответов

Я больше отношусь к прототипу, но думаю, что вы могли бы получить все узлы, а затем получить первый узел в массиве:

$('*')[0]

Затем получите дочерние элементы этого (для 0a , 0b и 0c)

$('*')[0].children()
2
ответ дан 6 December 2019 в 19:38
поделиться

jQuery не нужен ...

var root = document.firstChild;
1
ответ дан 6 December 2019 в 19:38
поделиться

вы можете изучить использование parent () и children ( ) функции. если вам нужно пройти несколько уровней, вы можете связать их так.

$("#a01").parent().parent()  //returns <div id="0">

пожалуйста, посмотрите мой комментарий, и я постараюсь дать лучшее решение.

0
ответ дан 6 December 2019 в 19:38
поделиться

OK, so what you need to do is the following (presuming that you are using the sample you've got), if you want to find the top level node using jquery is the following:

 $('*:not(* *)');  

What you are literally asking for here is for all nodes that are not children of other nodes. The problem is that for a html document, this will always give you only the html element, which isn't particularly useful. So, if you want to find the top level element within the body of a html document, you'd use something a lot simpler:

 $('body > *');

if you then wanted the second level, you'd just go

 $('body > * > *');

But, presuming you have some sort of arbitrary document structure (like the foo one you mention), what you can do is use the first example to find the first level:

 $('*:not(* *)');

and then for the second level

 $('*:not(* *)').find('> *');

and for the third level

 $('*:not(* *)').find('> * > *');

and so on and so forth. If you're looking for a root div element (presuming that your sample is like the question), you can do this:

 $('div:not(div div)');

and so on, replacing * with div. Not really sure why you'd want to do this, but it will work. The problem is the question doesn't really provide enough context for us to give you a better alternative.

4
ответ дан 6 December 2019 в 19:38
поделиться

Я могу неправильно понять вопрос, но предполагая, что под root вы имеете в виду точку, в которой parent - это тег, отличный от дочернего, тогда должно работать следующее:

function GetRoot(element) {
    while(element.parent().attr("tagName") == element.attr("tagName")) {
        element = element.parent();
    }

    return element;
}

Это в основном идет вверх по дереву, пока не найдет родительский тег, который является другим тегом, а затем вернет элемент. Для вашего примера это означало бы, что если бы ваш элемент был в, или что-то еще, он обнаружил бы его как корень и вернул бы его.

Создание пользовательского селектора jquery с этим тоже должно быть возможным, но, очевидно, более сложно.

Также должно быть довольно легко расширить это, чтобы взять целое число, определяющее уровень. Все, что вам нужно сделать, это пройти по дереву до указанной глубины, как только вы найдете корень, и вернуть эти элементы.

1
ответ дан 6 December 2019 в 19:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: