jQuery之美——子元素选择器

版权声明:黄河爱浪,[email protected], https://blog.csdn.net/u013350495/article/details/82714035

上篇回顾:jQuery之美——基本选择器

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

<div id="list">
    <div name="a">
        <div name="c">web前端</div>
        <div name="d">梦之蓝</div>
    </div>
    <div name="b">web-7258</div>
</div>

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

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

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

$("#list div").each(function (index,el) {
    console.log(el);    //[a,c,d,b]
});

$("#list>div").each(function (index,el) {
    console.log(el);    //[a,b]
});

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

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

$("ul li")

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

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

<ul>
    <li>
        <ul>
            <li></li>
        </ul>
    </li>
</ul>

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

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

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

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

下篇预告:jQuery之美——兄弟元素选择器

更多精彩文章,敬请持续关注——WEB前端梦之蓝

用微信扫描下方的二维码可直接关注该公众号哦,或者打开微信公众号搜索 “web-7258”,关注后会在第一时间将最新文章推送给您哦

猜你喜欢

转载自blog.csdn.net/u013350495/article/details/82714035