【发布时间】:2013-12-22 22:45:09
【问题描述】:
我正在尝试查找网页上一组 HTML 元素的宽度。
基本上,我想获得以下宽度:
-
html元素 -
body元素 -
body元素 [祖先] 下的所有元素 - “祖先”直属下到第四代的所有孩子(如果有那么远的话)
那么看下面的 HTML 代码:
<html>
<head>
<title></title>
</head>
<body>
<div>
<div>
<div>
<div>
<div>Test 1</div>
</div>
</div>
</div>
</div>
<div>
<div>
<div>
<div>
<div>Test 2
<div>Test 2 - Child</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
我可以很容易地获得html、body 和“祖先”[(1)、(2) 和 (3)] 的宽度:
console.log($('html').outerWidth());
console.log($('body').outerWidth());
$('body').children().each(function(){
console.log(this.outerWidth());
});
但是,我不确定如何将“祖先”的后代传到第 4 代。所以第四代就是Test 1 和Test 2,Test 2 - Child 就是第五代。
仅供参考我在我无法控制的页面上执行此操作,因此我无法定位像 id 和 class 这样的标识符。此外,后代的标签可能会有所不同,它们可能并不总是divs。
【问题讨论】:
-
你需要使用递归函数来尽可能深入。
-
$.each('div', function(k,v) { console.log('div #' + k + ': ' + $(this).html()) }); -
@Tomanow 谢谢。不保证元素将是
div标签 -
@scrowler 现在调查一下
-
@ObinwanneHill 这是一个小提琴示例:jsfiddle.net/5SV9Z/1 - 不确定你想对数据做什么,但这是针对这两个最深的元素并将它们的宽度记录到控制台。你可以使用这样的东西,如果你愿意,可以定位第四级元素。使用全局变量了解您的深度。
标签: javascript jquery