javascript-jQuery(属性操作/文本操作/元素操作/位置操作)

jQuery属性操作

设置和获取元素固有属性:prop()
设置或获取元素自定义属性值attr()
复制代码
   <a href="http://www.itcast.cn" title="都挺好">都挺好</a>
    <input type="checkbox" name="" id="" checked>
    <div index="1">woshidiv</div>
    <script>
        $(function () {
            //element.prop("属性名")获取元素固有属性值
            console.log($("a").prop("href"));
            $("a").prop("title", "我们都挺好");
            $("input").change(function () {
                console.log($(this).prop("checked"));
            })
            //2.自定义属性通过attr()获取
            console.log($("div").attr("index"));
            console.log($("div").attr("index", 10));

        })
    </script>
复制代码

数据缓存data()

该方法可以在指定的元素上存取数据,并不会修改DOM元素结构。一旦页面刷新,之前存放的数据都将被移除。
           //3.数据缓存data(),数据存放在元素的内存里
            $("span").data("uname", "adny");
            console.log($("span").data("uname"));

案例:全选功能

复制代码
$(function () {
    //1.全选 全不选功能模块
    //就是把全选按钮checkall的状态赋值给三个小按钮j-checkbox
    //事件可以使用change
    $(".checkall").change(function () {
        $(".j-checkbox, .checkall").prop("checked", $(this).prop("checked"));
    })
    //2.如果小复选框被选中的个数等于3就应该把全选按钮选上,否则全选按钮不选。
    $(".j-checkbox").change(function () {
        //$(".j-checkbox").length这个是小复选框的个数
        if ($(".j-checkbox:checked").length == $(".j-checkbox").length) {
            $(".checkall").prop("checked", true);
        } else {
            $(".checkall").prop("checked", false);
        }
    })

})
复制代码

jQuery内容文本值

复制代码
    <div>
        <span>我是内容</span>
    </div>
    <input type="text" name="" id="" value="请输入">
    <script>
        //1.获取设置元素内容html()
        console.log($("div").html());
        $("div").html("123");
        //2.获取设置元素文本内容 text()
        console.log($("div").text());
        $("div").text("123");
        //3.设置表单值 val()
        console.log($("input").val());
        $("input").val("123");
    </script>
复制代码

案例:增减商品数量

复制代码
//3.增减数量
    $(".increment").click(function () {
        //得到兄弟文本框
        var n = $(this).siblings(".itxt").val();
        // console.log(n);
        n++;
        $(this).siblings(".itxt").val(n);

    });
    $(".decrement").click(function () {
        //得到兄弟文本框
        var n = $(this).siblings(".itxt").val();
        if (n == 1) {
            return false;
        }
        // console.log(n);
        n--;
        $(this).siblings(".itxt").val(n);

    })
复制代码

修改商品小计

复制代码
   //3.增减数量
    $(".increment").click(function () {
        //得到兄弟文本框
        var n = $(this).siblings(".itxt").val();
        // console.log(n);
        n++;
        $(this).siblings(".itxt").val(n);
        //计算商品小计模块 当前商品价格
        var p = $(this).parent().parent().siblings(".p-price").html();
        // console.log(p);
        p = p.substr(1);
        // console.log(p);
        $(this).parent().parent().siblings(".p-sum").html("¥" + p * n);


    });
    $(".decrement").click(function () {
        //得到兄弟文本框
        var n = $(this).siblings(".itxt").val();
        if (n == 1) {
            return false;
        }
        // console.log(n);
        n--;
        $(this).siblings(".itxt").val(n);
        //计算商品小计模块 当前商品价格
        var p = $(this).parent().parent().siblings(".p-price").html();
        // console.log(p);
        p = p.substr(1);
        // console.log(p);
        $(this).parent().parent().siblings(".p-sum").html("¥" + p * n);

    });
复制代码
针对$(this).parent().parent().siblings(".p-price").html()
可以采用parents()返回指定的祖先
 
保留2位小数toFixed(2)
bug:当修改文本框里面的值的时候,小计不变
复制代码
   //4.用户修改文本框的值
    $(".itxt").change(function () {
        //先得到文本框里面的值 乘以 当前商品的单价
        var n = $(this).val();
        var p = $(this).parents(".p-num").siblings(".p-price").html();
        // console.log(p);
        p = p.substr(1);
        $(this).parent().parent().siblings(".p-sum").html("¥" + (p * n).toFixed(2));
    })
复制代码

jQuery元素操作

遍历元素
each()
 
遍历数据
$.each()
复制代码
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <script>
        $(function () {
            var sum = 0;
            //1.each()遍历元素
            var arr = ["red", "green", "blue"];
            $("div").each(function (index, domEle) {
                //回掉函数第一个参数一定是索引号 可以自己制定索引号名称
                // console.log(index);
                //回掉函数第二个参数一定是dom元素对象
                //dom对象没有css方法
                $(domEle).css("color", arr[index]);
                sum += parseInt($(domEle).text());
            })
            console.log(sum);
            //2.$.each()遍历元素,主要用于处理数据
            $.each($(arr), function (index, ele) {
                console.log(index);
                console.log(ele);

            })
            $.each({
                name: "andy",
                age: 18
            }, function (i, ele1) {
                console.log(i);
                console.log(ele1);
            })

        })
    </script>
复制代码

案例:计算总件数和总额

复制代码
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));
    }
复制代码
创建元素
添加元素
删除元素
复制代码
$(function () {
            //1.创建元素
            var li = $("<li>我是后来创建的li</li>");
            //2.添加元素
            //(1)内部添加 
            // $("ul").append(li);//放到内容的后面
            $("ul").prepend(li);//放到内容的前面
            //(2)外部添加
            var div = $("<div>我是后来添加的div</div>")
            // $("div").after(div);
            $("div").before(div);
            //3.删除元素
            // $("ul").remove();//可以删除匹配的元素 自杀
            $("ul").empty();//删除匹配元素里面的子节点,杀孩子
            $("ul").html("");//删除匹配元素里面的子节点,杀孩子
}
复制代码

案例:删除商品模块

复制代码
 //6.删除商品模块
    //(1)商品后面的删除按钮
    $(".p-action ").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();
    })
复制代码

案例:选定商品可以添加背景颜色

复制代码
$(".checkall").change(function () {
        $(".j-checkbox, .checkall").prop("checked", $(this).prop("checked"));
        if ($(this).prop("checked")) {
            //让所有商品添加check-cart-item的类名
            $(".cart-item").addClass("check-cart-item");
        } else {
            $(".cart-item").removeClass("check-cart-item")
        }
    })
复制代码

jQuery尺寸、位置操作

复制代码
   <div></div>
    <script>
        $(function () {
            //1.width()/height() 获取设置元素宽高的大小
            console.log($("div").width());
            $("div").width(300);
            //2.innerWidth() 包含padding
            console.log($("div").innerWidth());
            //3.outerWidth() 包含padding+border
            console.log($("div").outerWidth());
            //4.outerWidth(true) 包含padding+border+margin
            console.log($("div").outerWidth(true));
        })
    </script>
复制代码
注:以上参数为空,则获取相应值,返回数字型
如果参数为数字,则为修改相应值
参数不必写单位
 
位置偏移offset和position
复制代码
           //1.获取设置距离文档的位置(偏移)offset
            console.log($("div").offset());
            console.log($("div").offset().top);
            // $(".son").offset({
            //     top: 200,
            //     left: 200
            // });
            //2.获取距离带有定位父级位置(偏移)position,如果没有带有定位的父级,则已文档为准
            //该方法不能设置偏移。
            console.log($(".son").position());
复制代码

页面滚动

复制代码
<div class="back">返回顶部</div>
    <div class="container"></div>
    <script>
        $(function () {
            //设置
            $(document).scrollTop(100);
            //被卷去的头部scrollTop()/srollLeft()
            //页面滚动
            var boxTop = $(".container").offset().top;
            $(window).scroll(function () {
                console.log($(document).scrollTop());
                if ($(document).scrollTop() >= boxTop) {
                    $(".back").fadeIn();
                } else {
                    $(".back").fadeOut();
                }
            })
            //返回顶部
           $(".back").click(function(){
               //不能是文档而是html和body元素做动画
               $("body,html").stop().animate({
                   scrollTop:0
               })
           })
        })
    </script>
复制代码

 

posted @   终究还是避免不了遗憾  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示