对于下面的代码示例,获取父节点的更好方法是什么?
...
<tr>
<td>
<table>
<tr>
<td>
<div class="block_data">
Hello world!!
</div>
</td>
</tr>
</table>
</td>
</tr>
/*Javascript code 1*/
$('.block_data').parents('tr').first()...
/*Javascript code 2*/
$('.block_data').parent().parent()...这两个代码中哪一个更快(考虑性能,而不是编码)?想象一下这样的情况,有很多父母:
...
<tr>
<td>
...
</td>
</tr>
...
<tr>
<td>
<div>
<div>
<div>
<div class="block_data">
Hello world!!
</div>
</div>
</div>
</div>
</td>
</tr>发布于 2010-07-30 21:18:49
由于这两种方法实际上都不能正确地实现您想要的功能,所以哪种方法更快的问题有点离题,你不觉得吗?You are looking for closest(),而不是parent()或parents()。一般来说,在你确定你有一个正确工作的方法之前,考虑性能可能是一个坏主意。
发布于 2010-07-30 21:50:56
您使用的
.parents('tr').first()将承受对DOM的更改,其中包含处理程序的元素嵌套得更深。
在这种情况下,我更喜欢使用
.parents('tr:first')另一个答案提到了closest('tr')。这真的是两者之间的一种选择。
有些人喜欢使用.parents(),因为它的名称更能描述它所做的事情。这就是你需要.first()或:first来获得第一个的地方。
在.closest()和.parents()之间,性能因浏览器而异。
发布于 2010-07-30 21:17:31
在我看来,最好使用parents(),因为如果您的代码发生更改,您将引用完全不同的元素。这是有点慢的想法,但你只有几个节点,所以它应该不会有太大影响。
最好使用parents()并找到所需的元素,而不是(在某些其他情况下)编写许多.parent().parent().parent().parent().parent().parent().parent().parent()。这样代码更容易维护,imho。
https://stackoverflow.com/questions/3371752
复制相似问题