zoukankan      html  css  js  c++  java
  • jQuery---6. 常用API(jQuery元素操作 )

    6. jQuery元素操作

    6.1 遍历元素

    <body>
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <script>
            $(function() {
                //对于同类元素的不同操作就不可以用隐式迭代了,而是应该用到遍历元素(类型for,但是比for强大)
                //1. 求这些div里面数字的和
                //2. 将这3个div改成不同的颜色
                var arr = ["red", "green", "blue"];
                var sum = 0;
                $("div").each(function(i, domEle) {
                    $(domEle).css("color", arr[i]);
                    sum += parseInt($(domEle).text()); //将字符串转换成数字再相加
                })
                console.log(sum); //6
            })
        </script>
    </body>
    

    <body>
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <script>
            $(function() {
                var arr = ["red", "green", "blue"];
                //二.
                // $.each()方法遍历元素 主要用于遍历数据 ,处理数据
                $.each($("div"), function(i, ele) {
                    console.log(i);
                    console.log(ele);
                });
                //打印输出
                //0
                //<div style="color: red">1</div>
                //1
                //<div style="color: green">1</div>
                //2
                //<div style="color: blue">1</div>
    
                $.each(arr, function(i, ele) { //主要用于遍历数据 ,处理数据
                    console.log(i);
                    console.log(ele);
                });
                //打印输出
                //0
                //red
                //1
                //green
                //2
                //blue
                $.each({
                        name: "andy",
                        age: 18
                    }, function(i, ele) {
                        console.log(i); //输出属性名
                        console.log(ele); //输出属性值
                    })
                //打印输出
                //name
                //andy
                //age
                //18
            })
        </script>
    </body>
    
    • 总结:若想遍历dom对象,偏向于用第一种方法;若遍历数组、对象则只能用第二种方法

    案例:购物车总计和总额模块

    $(function() {
        //1. 全选 全不选功能模块
        //就是把全选按钮checkall的状态赋值给其他三个小按钮j-checkbox和另一个全选按钮就可以了
        //事件用change
        $(".checkall").change(function() {
            $(".j-checkbox,.checkall").prop("checked", $(this).prop("checked"));
        });
    
        //2. 如果小复选框被选中的个数等于3就应该把全选按钮选上,否则全选按钮不选
        //$(".j-checkbox:checked")表示被选中的复选框
        //$(".j-checkbox:checked").length被选中的复选框的个数
        $(".j-checkbox").change(function() {
            if ($(".j-checkbox:checked").length === $(".j-checkbox").length) {
                $(".checkall").prop("checked", true);
            } else {
                $(".checkall").prop("checked", false);
            }
        });
    
        //3.增减商品数量模块 首先声明一个变量,当我们点击+号(increment),就让这个值++。然后赋值给文本框
        $(".increment").click(function() {
            var n = $(this).siblings(".itxt").val();
            n++;
            $(this).siblings(".itxt").val(n);
    
            //4.计算小计模块 文本框的值*当前商品单价
            //当前商品价格p
            // var p = $(this).parent().parent().siblings(".p-price").html();
            var p = $(this).parents(".p-num").siblings(".p-price").html();
            p = p.substr(1); //对字符串从第一位往后截取   去掉¥
    
            //将小计结果保留后两位toFixed(2)
            var price = (p * n).toFixed(2);
            // $(this).parent().parent().siblings(".p-sum").html("¥" + p * n); 改行改进写法如下
            $(this).parents(".p-num").siblings(".p-sum").html("¥" + price);
    
            getSum();
        });
    
    
        $(".decrement").click(function() {
            var n = $(this).siblings(".itxt").val();
            if (n == 1) {
                return false;
            }
            n--;
            $(this).siblings(".itxt").val(n);
    
            //4
            var p = $(this).parents(".p-num").siblings(".p-price").html();
            p = p.substr(1); //对字符串从第一位往后截取   去掉¥
            $(this).parents(".p-num").siblings(".p-sum").html("¥" + (p * n).toFixed(2));
    
            getSum();
        });
    
    
        //5. 用户修改文本框的值,也要重新计算小计结果
        $(".itxt").change(function() {
            //先得到当前文本框的值  数量
            var n = $(this).val();
            //当前商品单价
            var p = $(this).parents(".p-num").siblings(".p-price").html();
            p = p.substr(1); //对字符串从第一位往后截取   去掉¥
    
            $(this).parents(".p-num").siblings(".p-sum").html("¥" + (p * n).toFixed(2));
    
            getSum();
        })
    
        //6. 计算总计和总和模块
        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));
        }
    })
    

    6.2 创建元素

    6.3 添加元素


    6.4 删除元素

    <body>
        <ul>
            <li>原先的li</li>
        </ul>
        <div class="test">我是原先的div</div>
        <script>
            //1. 创建元素
            var li = $("<li>后来的li</li>");
            var div = $("<div>我是后来的div</div>");
    
            //2. 添加元素
            //(1)内部添加
            // $("ul").append(li); //放到内容最后面
            $("ul").prepend(li); //放到内容最前面
            //(2)外部添加
            // $(".test").after(div);
            $(".test").before(div);
            //3.删除元素
            // $("ul").remove();//ul自己和里面的内容都删除
            // $("ul").empty();//ul还在 里面的li和内容都没了
            $("ul").html(""); ////ul还在 里面的li和内容都没了  即修改里面内容为一个空的字符串
        </script>
    </body>
    

    案例:购物车删除商品

    • 结构

    • JS

    //7. 删除商品模块
    //(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();
    })
    

    案例:购物车选中商品添加背景

    • 在css中添加
    .check-cart-item {
        background: #fff4e8;
    }
    
    • JS
    //1. 全选 全不选功能模块
    //就是把全选按钮checkall的状态赋值给其他三个小按钮j-checkbox和另一个全选按钮就可以了
    //事件用change
    $(".checkall").change(function() {
        $(".j-checkbox,.checkall").prop("checked", $(this).prop("checked"));
    
        //8.添加背景
        if ($(this).prop("checked")) {
            //让所有商品添加 check-cart-item类名
            $(".cart-item").addClass("check-cart-item");
        } else {
            // 否则移除check-cart-item类名
            $(".cart-item").removeClass("check-cart-item");
        }
    });
    
    //2. 如果小复选框被选中的个数等于3就应该把全选按钮选上,否则全选按钮不选
    //$(".j-checkbox:checked")表示被选中的复选框
    //$(".j-checkbox:checked").length被选中的复选框的个数
    $(".j-checkbox").change(function() {
        if ($(".j-checkbox:checked").length === $(".j-checkbox").length) {
            $(".checkall").prop("checked", true);
        } else {
            $(".checkall").prop("checked", false);
        }
        //8.添加背景
        if ($(this).prop("checked")) {
            //让当前商品添加 check-cart-item类名
            $(this).parents(".cart-item").addClass("check-cart-item");
        } else {
            // 否则移除check-cart-item类名
            $(this).parents(".cart-item").removeClass("check-cart-item");
        }
    });
    
  • 相关阅读:
    还是this的问题
    this的问题
    javascript深入理解js闭包
    立即执行函数: (function(){...})() 与 (function(){...}()) 有什么区别?
    java中的精度问题的处理
    51nod 1766 树上的最远点对——线段树
    CODE FESTIVAL 2017 qual B C
    bzoj 2144: 跳跳棋——倍增/二分
    洛谷八连测第一轮
    bzoj 2079: [Poi2010]Guilds——结论题
  • 原文地址:https://www.cnblogs.com/deer-cen/p/12357691.html
Copyright © 2011-2022 走看看