浏览 2062 次
锁定老帖子 主题:利用CSS取得某类子代的先祖集合的疑问
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-17
比如用prototype可以这样做 $$('th').each(function (th) { var tableObj = th.up('table'); blarblarblar... }) 但是想像一下就会感觉效率很低,有什么高招否? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-17
你这个如果一个table包含多个th,得重复遍历多少次?
效率这么低,为什么非得用它的内置方法: var tables = document.getElemenstByTagName("table"), arrTables = []; for(var i=0, l=tables.length, i<l; i++){ var table = tables[i]; if(table.getElemenstByTagName("th").length) arrTables[arrTables.length] = table; } alert(arrTables) 如果非得用,那就这样吧: $$('table').each(function (table) { if(table.getElemenstByTagName("th").length){ // 你就blarblarblar... } }); |
|
返回顶楼 | |
发表时间:2008-09-17
恩恩
正是想到了可能会有效率低下,才来提个问题的 对节点使用getElemenstByTagName来取得是否存在子节点,不错不错,先收下了 多谢 选择器上有按父亲选子孙的,为什么就没有相反的呢 |
|
返回顶楼 | |
发表时间:2008-09-17
不过仍然还是有个问题
2楼的方法与我在顶楼的效果并不完全相同 考虑一下下面的情况 <table id=t1> <tr><td> <table id=t2> <tr><th> </table> </table> 用2楼的方法就会让t1也有边框,顶楼的方法只会在t2有边框 类似于子代选择器和子选择器的区别 |
|
返回顶楼 | |
发表时间:2008-09-17
嵌套表格除非极少的情况使用,
否则不论从前端表现与结构分离、以及行为交互层来说,都极为不可取。 |
|
返回顶楼 | |
发表时间:2008-09-17
softsoft 写道 恩恩
正是想到了可能会有效率低下,才来提个问题的 对节点使用getElemenstByTagName来取得是否存在子节点,不错不错,先收下了 多谢 选择器上有按父亲选子孙的,为什么就没有相反的呢 效率,以及HTML流的顺序。 CSS最初设计的原则就是要避免回溯(除了极个别的如last-child伪类之外) 此外要避免实现上可能出现的性能问题,因此要保证都是常数时间内可计算。 参见:http://www.terrainformatica.com/?p=99 |
|
返回顶楼 | |