Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Селектор первого потомка (https://javascript.ru/forum/misc/24296-selektor-pervogo-potomka.html)

FINoM 25.12.2011 07:52

Селектор первого потомка
 
Нужно через querySelectorAll получить потомков первого уровня.
node.querySelectorAll('> div'); // выдаёт синтаксическую ошибку

можно только так:
node.querySelectorAll('#node1 > div'); //при условии, что node.id==="node1"
Как быть, если я не знаю селектора node? Может быть есть возможность его (селектор) получить (встроенными функциями, без переборов)?

Вижу вариант вешать какой-то рандомный атрибут, типа:
var id = node.dataset.randomId = Math.random();
node.querySelectorAll('[data-randomId="'+id+'"] > div');
Но это мне кажется говнокодом. Есть идеи?

Kolyaj 25.12.2011 10:42

node.childNodes

Pavel M. 25.12.2011 15:59

а библиотеками не хотите пользоваться?
в jquery будет $(node).children('div') или $(node).find('>div')
а после node.childNodes надо будет еще в цикле выбирать нужные элементы

trikadin 25.12.2011 16:16

Цитата:

Сообщение от Pavel M.
а после node.childNodes надо будет еще в цикле выбирать нужные элементы

node.children

Nekromancer 25.12.2011 16:47

Pavel M.,
Вы странный, зачем ради этого подключать библиотеку которая для поиска одной ноды, выполнит 35 тысяч функций?

Pavel M. 25.12.2011 18:37

я предложил единственный пока в этой теме кроссбраузерный вариант решения проблемы,
не утверждая что он единственный и самый лучший
да, видимо, я странный :)

Nekromancer 25.12.2011 18:53

Pavel M.,
childNode тоже кроссбраузерный. А если человек использует querySelector, то ему явно пофиг на старые браузеры, так что подойдёт и children.

Pavel M. 25.12.2011 19:36

да, я думаю FINoM сам разберется, что лучше использовать

FINoM 25.12.2011 20:06

Да фигово. Хотелось сделать это сверхбыстро (селекторами) и без циклов.

Nekromancer 25.12.2011 20:12

FINoM,
Никто не говорил, что селекторами быстро. Во первых удобно не значит быстро, вы вторых мало писать, не значит быстро. Эт вы в jQuery понабрались.


Часовой пояс GMT +3, время: 06:11.