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");
    }
});
原文地址:https://www.cnblogs.com/deer-cen/p/12357691.html