массив из верхних узлов документа
Подскажите как создать массив из всех самых верхних узлов документа, то есть из тех узлов у которых нет childNodes. Нужно чтобы в массиве присутствовали ELEMENT_NODE и TEXT_NODE. Может быть в js или jquery есть какие-то подходящие стандартные функции?
|
|
милт,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> * { border: #3333FF solid 1px; padding: 5px; } </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function(){ $( ':not(:has(>))' ).css('background', 'rgb(102, 255, 102)'); }); </script> </head> <body> <div> <a>Нажимаем</a> </div> <ul> <li>1</li> </ul> </body> </html> |
милт, если нужны пустые TEXT_NODE убрать && el.data.replace(/\s/g,'')
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script> window.onload = function(){ var arrAll = []; function getEls(el) { var chNodes, i; if(el.childNodes.length == 0 && el.nodeType == 1|| el.nodeType == 3 && el.data.replace(/\s/g,'')) arrAll.push(el); else { chNodes = el.childNodes; for (i = 0; i < chNodes.length; i++) { getEls(chNodes[i]); // вызываем рекурсивно } } } getEls(document.body); alert(arrAll.length) }; </script> </head> <body> <div> <a></a> <!-- 1 --> </div> <ul> <li>1</li> <!-- 2 --> </ul> </body> </html> |
Часовой пояс GMT +3, время: 18:32. |