jquery的find方法要慎用啊

七海恋空 2020-12-27 浏览(0 评论(0

自从发现jquery有个find这么一个方法后,我就经常喜欢调用它,也没有深究find的用法,反正就是查找的意思嘛。直到最近,我掉坑里了。最近写了一个树状节点的js效果,基本原理是:当前节点包含本节点和子节点,如果子节点又包含子节点,就把子节点当做当前节点,继续循环调用。这种递归调用比较费脑子,我也是整了好几天才写好。

树状节点效果弄好了之后,开始用着还挺正常,没过两天自己测出bug来了,真尴尬!点击展开各个节点,我发现有个节点明明是一级节点,结果在二级节点的子节点重复输出了一遍!我把我那递归的函数测了又测,发现没啥毛病。

我上百度查了很多帖子,终于让我找到了端倪。jquery还有个方法叫做children,这个儿子方法我不常用,那个parent倒是经常用。经过反复测试我终于找到问题所在。find的方法查找的是所有子节点,children只是查找下一层节点。这有点类似于css中的大于号的用法。比如说.head a跟.head>a这2段代码的效果就不一样。我那个树状节点,就是儿子套孙子,孙子再套儿子,如果用find来操作的话,儿子孙子都跟着一起变换了。