массив из верхних узлов документа
Подскажите как создать массив из всех самых верхних узлов документа, то есть из тех узлов у которых нет 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, время: 20:04. |