jQuery4

news/2024/7/11 1:00:05 标签: javascript, 前端, jquery

目录

1.3. jQuery 元素操作

1.3.1. 遍历元素

1.3.2. 案例:购物车案例模块-计算总计和总额

1.3.3. 创建、添加、删除

1.3.4 案例:购物车案例模块-删除商品模块

 1.4.  jQuery 尺寸、位置操作

1.4.1.  jQuery 尺寸操作

1.4.2. jQuery 位置操作

1.4.3. 案例: 品优购电梯导航(上)

1.4.4. 案例:品优购电梯导航(下)


1.3. jQuery 元素操作

​    jQuery 元素操作主要讲的是用jQuery方法,操作标签的遍历、创建、添加、删除等操作。

1.3.1. 遍历元素

​    jQuery 隐式迭代是对同一类元素做了同样的操作。 如果想要给同一类元素做不同操作,就需要用到遍历。

 注意:此方法用于遍历 jQuery 对象中的每一项,回调函数中元素为 DOM 对象,想要使用 jQuery 方法需要转换。

  注意:此方法用于遍历 jQuery 对象中的每一项,回调函数中元素为 DOM 对象,想要使用 jQuery 方法需要转换。

javascript"><body>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <script>
        $(function() {
            // 如果针对于同一类元素做不同操作,需要用到遍历元素(类似for,但是比for强大)
            var sum = 0;
            var arr = ["red", "green", "blue"];
            // 1. each() 方法遍历元素 
            $("div").each(function(i, domEle) {
                // 回调函数第一个参数一定是索引号  可以自己指定索引号号名称
                // console.log(i);
                // 回调函数第二个参数一定是 dom 元素对象,也是自己命名
                // console.log(domEle);  // 使用jQuery方法需要转换 $(domEle)
                $(domEle).css("color", arr[i]);
                sum += parseInt($(domEle).text());
            })
            console.log(sum);
            // 2. $.each() 方法遍历元素 主要用于遍历数据,处理数据
            // $.each($("div"), function(i, ele) {
            //     console.log(i);
            //     console.log(ele);
            // });
            // $.each(arr, function(i, ele) {
            //     console.log(i);
            //     console.log(ele);
            // })
            $.each({
                name: "andy",
                age: 18
            }, function(i, ele) {
                console.log(i); // 输出的是 name age 属性名
                console.log(ele); // 输出的是 andy  18 属性值
            })
        })
    </script>
</body>

1.3.2. 案例:购物车案例模块-计算总计和总额

> 1.把所有文本框中的值相加就是总额数量,总计同理。
> 2.文本框里面的值不同,如果想要相加需要用 each() 遍历,声明一个变量做计数器,累加即可。

javascript"> // 5. 计算总计和总额模块
    getSum();

    function getSum() {
        var count = 0; // 计算总件数 
        var money = 0; // 计算总价钱
        $(".itxt").each(function(i, ele) {
            count += parseInt($(ele).val());
        });
        $(".amount-sum em").text(count);
        $(".p-sum").each(function(i, ele) {
            money += parseFloat($(ele).text().substr(1));
        });
        $(".price-sum em").text("¥" + money.toFixed(2));
    }

 1.3.3. 创建、添加、删除

​    jQuery方法操作元素的创建、添加、删除方法很多,则重点使用部分,如下:

 

 

javascript"><body>
    <ul>
        <li>原先的li</li>
    </ul>
    <div class="test">我是原先的div</div>
    <script>
        $(function() {
            // 1. 创建元素
            var li = $("<li>我是后来创建的li</li>");
      
            // 2. 添加元素
            //     2.1 内部添加
            // $("ul").append(li);  内部添加并且放到内容的最后面 
            $("ul").prepend(li); // 内部添加并且放到内容的最前面
            //  2.2 外部添加
            var div = $("<div>我是后妈生的</div>");
            // $(".test").after(div);
            $(".test").before(div);
      
            // 3. 删除元素
            // $("ul").remove(); 可以删除匹配的元素 自杀
            // $("ul").empty(); // 可以删除匹配的元素里面的子节点 孩子
            $("ul").html(""); // 可以删除匹配的元素里面的子节点 孩子
        })
    </script>
</body>

1.3.4 案例:购物车案例模块-删除商品模块

> 1.核心思路:把商品remove() 删除元素即可
> 2.有三个地方需要删除: 1. 商品后面的删除按钮 2. 删除选中的商品 3. 清理购物车
> 3.商品后面的删除按钮: 一定是删除当前的商品,所以从 $(this) 出发
> 4.删除选中的商品: 先判断小的复选框按钮是否选中状态,如果是选中,则删除对应的商品
> 5.清理购物车: 则是把所有的商品全部删掉

javascript">// 6. 删除商品模块
    // (1) 商品后面的删除按钮
    $(".p-action a").click(function() {
        // 删除的是当前的商品 
        $(this).parents(".cart-item").remove();
        getSum();
    });
    // (2) 删除选中的商品
    $(".remove-batch").click(function() {
        // 删除的是小的复选框选中的商品
        $(".j-checkbox:checked").parents(".cart-item").remove();
        getSum();
    });
    // (3) 清空购物车 删除全部商品
    $(".clear-all").click(function() {
        $(".cart-item").remove();
        getSum();
    })

 1.4.  jQuery 尺寸、位置操作

​    jQuery中分别为我们提供了两套快速获取和设置元素尺寸和位置的API,方便易用,内容如下。

1.4.1.  jQuery 尺寸操作

​     jQuery 尺寸操作包括元素宽高的获取和设置,且不一样的API对应不一样的盒子模型。

javascript"><body>
    <div></div>
    <script>
        $(function() {
            // 1. width() / height() 获取设置元素 width和height大小 
            console.log($("div").width());
            // $("div").width(300);

            // 2. innerWidth() / innerHeight()  获取设置元素 width和height + padding 大小 
            console.log($("div").innerWidth());

            // 3. outerWidth()  / outerHeight()  获取设置元素 width和height + padding + border 大小 
            console.log($("div").outerWidth());

            // 4. outerWidth(true) / outerHeight(true) 获取设置 width和height + padding + border + margin
            console.log($("div").outerWidth(true));
        })
    </script>
</body>

   注意:有了这套 API 我们将可以快速获取和子的宽高,至于其他属性想要获取和设置,还要使用 css() 等方法配合。

1.4.2. jQuery 位置操作

​    jQuery的位置操作主要有三个: offset()、position()、scrollTop()/scrollLeft() , 具体介绍如下: 

 

 

 

javascript"><body>
    <div class="father">
        <div class="son"></div>
    </div>
        
    <div class="back">返回顶部</div>
    <div class="container"></div>
   
    <script>
        $(function() {
            // 1. 获取设置距离文档的位置(偏移) offset
            console.log($(".son").offset());
            console.log($(".son").offset().top);
            // $(".son").offset({
            //     top: 200,
            //     left: 200
            // });
      
            // 2. 获取距离带有定位父级位置(偏移) position   如果没有带有定位的父级,则以文档为准
            // 这个方法只能获取不能设置偏移
            console.log($(".son").position());
            // $(".son").position({
            //     top: 200,
            //     left: 200
            // });
      
              // 3. 被卷去的头部
              $(document).scrollTop(100);
            // 被卷去的头部 scrollTop()  / 被卷去的左侧 scrollLeft()
            // 页面滚动事件
            var boxTop = $(".container").offset().top;
            $(window).scroll(function() {
                // console.log(11);
                console.log($(document).scrollTop());
                if ($(document).scrollTop() >= boxTop) {
                    $(".back").fadeIn();
                } else {
                    $(".back").fadeOut();
                }
            });
            // 返回顶部
            $(".back").click(function() {
                // $(document).scrollTop(0);
                $("body, html").stop().animate({
                    scrollTop: 0
                });
                // $(document).stop().animate({
                //     scrollTop: 0
                // }); 不能是文档而是 html和body元素做动画
            })
        })
    </script>
</body>

1.4.3. 案例: 品优购电梯导航(上)

> 1.当我们滚动到 今日推荐 模块,就让电梯导航显示出来
> 2.点击电梯导航页面可以滚动到相应内容区域
> 3.核心算法:因为电梯导航模块和内容区模块一一对应的
> 4.当我们点击电梯导航某个小模块,就可以拿到当前小模块的索引号
> 5.就可以把animate要移动的距离求出来:当前索引号内容区模块它的offset().top
> 6.然后执行动画即可

1.4.4. 案例:品优购电梯导航(下)

> 1.当我们点击电梯导航某个小li, 当前小li 添加current类,兄弟移除类名
> 2.当我们页面滚动到内容区域某个模块, 左侧电梯导航,相对应的小li模块,也会添加current类, 兄弟移除current类。
> 3.触发的事件是页面滚动,因此这个功能要写到页面滚动事件里面。
> 4.需要用到each,遍历内容区域大模块。 each里面能拿到内容区域每一个模块元素和索引号
> 5.判断的条件:  被卷去的头部 大于等于 内容区域里面每个模块的offset().top
> 6.就利用这个索引号找到相应的电梯导航小li添加类。

javascript">$(function() {
    // 当我们点击了小li 此时不需要执行 页面滚动事件里面的 li 的背景选择 添加 current
    // 节流阀  互斥锁 
    var flag = true;
    // 1.显示隐藏电梯导航
    var toolTop = $(".recommend").offset().top;
    toggleTool();

    function toggleTool() {
        if ($(document).scrollTop() >= toolTop) {
            $(".fixedtool").fadeIn();
        } else {
            $(".fixedtool").fadeOut();
        };
    }

    $(window).scroll(function() {
        toggleTool();
        // 3. 页面滚动到某个内容区域,左侧电梯导航小li相应添加和删除current类名


        if (flag) {
            $(".floor .w").each(function(i, ele) {
                if ($(document).scrollTop() >= $(ele).offset().top) {
                    console.log(i);
                    $(".fixedtool li").eq(i).addClass("current").siblings().removeClass();

                }
            })
        }



    });
    // 2. 点击电梯导航页面可以滚动到相应内容区域
    $(".fixedtool li").click(function() {
        flag = false;
        console.log($(this).index());
        // 当我们每次点击小li 就需要计算出页面要去往的位置 
        // 选出对应索引号的内容区的盒子 计算它的.offset().top
        var current = $(".floor .w").eq($(this).index()).offset().top;
        // 页面动画滚动效果
        $("body, html").stop().animate({
            scrollTop: current
        }, function() {
            flag = true;
        });
        // 点击之后,让当前的小li 添加current 类名 ,姐妹移除current类名
        $(this).addClass("current").siblings().removeClass();
    })
})


http://www.niftyadmin.cn/n/1692927.html

相关文章

java基础学习 数组,循环,变量,函数加载情况先后顺序,方法定义

导航 1.接收输入得字符串两种方式 2.数组的初始化 3.使用for来遍历&#xff0c;对象作为参数 4.函数方法定义 5.main函数执行前会先加载类&#xff0c;static匿名模块会进行执行 ———————————————————————————————————————— 1.接收输…

今天java布置三道题 主要就是语法注意点

导航&#xff1a; 1.输出最大值最小值 2.打印10*10方阵数组的位置 3.1到100累加 ———————————————————————————————————————— 1.输出最大值最小值 题目&#xff1a; 1、实验要求本实验要求&#xff1a;根据用户输入的10个数值&…

jQuery6

目录 1.4. jQuery 拷贝对象 1.4.1. 瀑布流插件&#xff08;重点讲解&#xff09; 1.4.2. 图片懒加载插件 1.4.3. 全屏滚动插件 1.4.4. bootstrap组件 1.5. jQuery 多库共存 1.6. jQuery 插件 1.7. 今日总结 1.4. jQuery 拷贝对象 ​ jQuery中分别为我们提供了两套…

c++的日期时间 类中使用列表 内联函数inline 输出异常 预处理器#,## 预定义宏 信号处理

导航 1.c的日期&时间 2.类中使用列表 3.c中的内联函数inline 4.c类中静态成员函数 5.输出异常 6.预处理器#&#xff0c;## 7.预定义宏 8.信号处理 ———————————————————————————————————————— 1.c的日期&时间&#xff1a;本地…

jQuery5

目录 1.1. jQuery 事件注册 1.2. jQuery 事件处理 1.2.1 事件处理 on() 绑定事件 1.2.2. 案例&#xff1a;发布微博案例 1.2.3. 事件处理 off() 解绑事件 1.2.4. 事件处理 trigger() 自动触发事件 1.3. jQuery 事件对象 1.1. jQuery 事件注册 ​ jQuery 为我们提供了方便…

L328 What Is Millennial Burnout?

What Is Millennial Burnout?Do you often feel stressed? Does the pace of life make you feel like youre continually on the go or at the end of your rope? Are you often so wiped out by work that you struggle to switch off? And are you a member of the mill…

新浪下拉菜单案例淘宝服饰精品案例

目录 1.新浪下拉菜单 2.淘宝服饰精品 1.新浪下拉菜单 利用jQuery基础选择器$("选择器")选择对应的方法实现 实现效果 实现代码 <script>$(function() {// 鼠标经过$(".nav>li").mouseover(function() {// $(this) jQuery 当前元素 this不要加…

C++多线程 并行与并发 了解进程和线程 浅显的进行传参,调用

导航 1.了解并行与并发的概念 2.了解进程和线程 3.浅显的进行传参&#xff0c;调用 ———————————————————————————————————————— 多线程程序包含可以同时运行的两个或多个部分。这样的程序中的每个部分称为一个线程&#xff0c;每个…