jQuery 子元素选择器 find() 和 children()

Love The Way You Lie 2022-05-12 06:50 426阅读 0赞

在前面的文章中多次提到了 子元素 和 直接子元素,本篇文章来说明这两者的区别。

  1. <div id="list">
  2. <div name="a">
  3. <div name="c">web前端</div>
  4. <div name="d">梦之蓝</div>
  5. </div>
  6. <div name="b">web-7258</div>
  7. </div>

上面的HTML代码中,通过name值给div命名

  1. console.log($("#list div").size()); //4
  2. console.log($("#list>div").size()); //2

小编看过太多的开发者只使用第一种,获取方式,未使用第二种方式。但是这两种方式的差别非常明显。第一种获取到的元素有4个,第二种获取到的元素只有2个,下面的代码来查看他们获取到元素的区别

  1. $("#list div").each(function (index,el) {
  2. console.log(el); //[a,c,d,b]
  3. });
  4. $("#list>div").each(function (index,el) {
  5. console.log(el); //[a,b]
  6. });

第一种中获取到了 #list 下所有的 div 元素,而第二种只获取了 #list 下第一级的 div 元素。这就是 子元素 与 直接子元素 的区别。在当前元素下面的元素都属于当前元素的子元素,只有当前元素下面第一级的元素才能是 直接子元素。

写代码时一定要明确自己的元素级别,可能当时自己的代码并没有报错,但代码健壮性是很差的,如上面的示例代码,获取元素时一定要明确选择正确的元素,避免获取无效的元素节点,多层级的查找dom元素使性能低下。

  1. $("ul li")

经常看到有人通过这种方式获取ul下的li元素,好像都是能正常获取的,严格意义上来说是错误的,因为在 ul 下了直接子元素一定会是 li(如果不是建议去好好学一下HTML入门)。

假如当前是一个这样的代码结构

  1. <ul>
  2. <li>
  3. <ul>
  4. <li></li>
  5. </ul>
  6. </li>
  7. </ul>

这种结构在 树形列表 中是常用的。如果似上面的获取元素方式,肯定是出错误。

jQuery还专门提供了子元素的获取方式,find()children()

  1. $("#list").find("div"); //子元素
  2. $("#list").children("div"); //直接子元素

find() 选择器使用者太多太多,而 children() 却很少,希望各位读者阅读完本篇文章后能认识 子元素 与 直接子元素 的区别,选择正确的选择器,写出健壮性强,阅读性好的美丽代码。

作者:黄河爱浪 QQ:1846492969,邮箱:helang.love@qq.com

微信公众号:web-7258,本文原创,著作权归作者所有,转载请注明原链接及出处。

更多精彩文章,请扫下方二维码关注我的公众号

20190512094840637.jpg

发表评论

表情:
评论列表 (有 0 条评论,426人围观)

还没有评论,来说两句吧...

相关阅读