二、jQuery常用的API:jQuery 选择器




学习来源: https://www.bilibili.com/video/BV1HJ41147DG

jQuery 选择器

原生 JS 获取元素方式很多,很杂,而且兼容性情况不一致,因此 jQuery 给我们做了封装,使获取元素统一标准。

1、基础选择器
  $("选择器")   // 里面的选择器直接写 CSS 选择器即可,但是要加引号 
名称用法描述
ID选择器$('#id')获取指定 ID 的元素
全选选择器$('*')匹配所有元素
类选择器$('.class')获取同一类 class 的元素
标签选择器$('div')获取同一类标签的所有元素
并集选择器$('div,p,li')选取多个元素
交集选择器$('li.current')交集元素
2、层级选择器

层级选择器最常用的两个分别为:后代选择器和子代选择器。

名称示例描述
子代选择器$('ul>li')使用 > 号,获取亲儿子层级的元素;注意,并不会获取孙子层级的元素
后代选择器$('ul li')使用空格,代表后代选择器,获取 ul 下的所有 li 元素,包括孙子等

基础选择器和层级选择器示例

<body>
    <div>我是 div</div>
    <div class="nav">我是 nav div</div>
    <ul>
        <li>我是 ul 的儿子
            <ol>
                <li>我是 ul 的孙子</li>
            </ol>
        </li>
        <li>我是 ul 的儿子</li>
        <li>我是 ul 的儿子</li>
        <li>我是 ul 的儿子</li>
    </ul>
    <script>
        $(function () {
            console.log($('div'));
            console.log($('.nav'));
            console.log($('ul'));
            console.log($('ul>li'));
            console.log($('ul li'));
        })
    </script>
</body>

在这里插入图片描述

隐式迭代

把匹配的所有元素内部进行遍历循环,执行相应的方法,而不用再进行循环,简化了操作,方便调用。

jQuery 设置样式

  $('div').css('属性','值')  // jquery对象不能使用style

具体参考jQuery样式操作:https://blog.csdn.net/qq_45645902/article/details/105961812

<body>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <div>惊喜不,意外不</div>
    <ul>
        <li>相同的操作</li>
        <li>相同的操作</li>
        <li>相同的操作</li>
    </ul>
    <script>
        // 给每个元素添加 css 方法
        // 获取四个div元素 
        var all = $("div");
        // 给四个div设置背景颜色为橙色
        all.css("background", "orange");
        // 将所有 li 的字体颜色设置为红色
        $("ul li").css("color", "red");
    </script>
</body>

在这里插入图片描述

3、筛选选择器

顾名思义就是在所有的选项中选择满足条件的进行筛选选择

名称用法描述
:first$('li:first')获取第一个 li 元素
:last$('li:last')获取最后一个 li 元素
:eq(index)$('li:eq(2)')获取到的 li 元素中,选择索引号为2的元素,索引号 index 从0开始
:odd$('li:odd')获取到的 li 元素中,选择索引号为奇数的元素
:even$('li:even')获取到的 li 元素中,选择索引号为偶数的元素

示例**

<body>
    <ul>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
    </ul>
    <ol>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
        <li>多个里面筛选几个</li>
    </ol>
    <script>
        $(function () {
            $("ul li:first").css("color", "red");
            $("ul li:eq(2)").css("color", "blue");
            $("ol li:odd").css("color", "skyblue");
            $("ol li:even").css("color", "pink");
        })
    </script>
</body>

在这里插入图片描述
jQuery 中还有一些筛选方法,类似 DOM 中的通过一个节点找另外一个节点,父、子、兄以外有所加强。
重点
在这里插入图片描述

<body>
    <ol>
        <li>我是ol 的li</li>
        <li>我是ol 的li</li>
        <li class="item">我是ol 的li</li>
        <li>我是ol 的li</li>
        <li>我是ol 的li</li>
    </ol>
    <ul>
        <li>我是ul的li</li>
        <li>我是ul的li</li>
        <li>我是ul的li</li>
    </ul>
    <div class="current">俺有current</div>
    <div>俺木有current</div>
    <script>
        // 注意一下都是方法 带括号
        $(function () {
            // 兄弟元素 siblings 除了自身元素之外的所有亲兄弟
            $("ol .item").siblings("li").css("color", "red");

            // 第n个元素
            var index = 2;
            // 1、利用选择器的方式选择
            $("ul li:eq(2)").css("color", "blue");
            $("ul li:eq(" + index + ")").css("color", "blue");
            // 2、利用选择方法的方式选择,更推荐这种写法
            $("ul li").eq(2).css("color", "blue");
            $("ul li").eq(index).css("color", "blue");

            // 判断是否有某个类名
            console.log($("div:first").hasClass("current"));
            console.log($("div:last").hasClass("current"));
        });
    </script>
</body>

在这里插入图片描述

案例:仿新浪下拉菜单

相关链接:https://blog.csdn.net/qq_45645902/article/details/105984458

4、jQuery 里面的排他思想

想要多选一的效果,排他思想:当前元素设置样式,其余的兄弟元素清除样式。

        $(this).css("color", "red");
        $(this).siblings().css("color", "");

示例

<body>
    <button>点击</button>
    <button>点击</button>
    <button>点击</button>
    <script>
        $(function () {
            // 隐式迭代 给所有的按钮都绑定了点击事件
            $("button").click(function () {
                // 当前的元素变化背景颜色
                $(this).css("background", "pink");
                // 其余的兄弟去掉背景颜色 隐式迭代
                $(this).siblings("button").css("background", "");
            });
        })
    </script>
</body>

在这里插入图片描述

5、链式编程

为了节省代码量,看起来更优雅

  $(this).css('color', 'red').sibling().css('color', ''); 
  // 相当于
  $(this).css('color', 'red');
  $(this).sibling().css('color', ''); 
6、案例:淘宝精品服饰

相关链接:https://blog.csdn.net/qq_45645902/article/details/105975632

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值