jQuery-01

作者: xiaohan_zhang | 来源:发表于2019-09-25 21:53 被阅读0次
    入口函数写法
            // 第一种
            $(document).ready(function () {
               alert('1');
            });
            // 第二种
            jQuery(document).ready(function () {
               alert('2');
            });
            // 第三种---推荐
            $(function () {
                alert('3');
            });
            // 第四种
            jQuery(function () {
               alert('4');
            });
    
    核心函数

    $(); 代表用jQuery的核心函数。

    1. 接收一个函数
    $(function () {
        alert("接收一个函数");
    });
    
    1. 接收一个字符串
      2.1 接收一个字符串选择器 返回一个jQuery对象,对象中保存了找到的DOM元素
    var $box1 = $(".box1");
    var $box2 = $("#box2");
    console.log($box1);
    console.log($box2);
    

      2.2 接收一个代码片段 返回一个jQuery对象,对象中保存了创建的DOM元素

    var $p = $("<p>我是段落</p>");
    console.log($p);
    // 将新创建的P标签添加到box1中
    $box1.append($p);
    
    1. 接收一个DOM元素 会被包装成一个jQuery对象返回
    var span = document.getElementsByTagName('span')[0];
    console.log(span);
    var $span = $(span);
    console.log($span);
    
    jQuery对象

    jQuery对象是伪数组。
    伪数组:有从0到length-1的属性,并且有length属性。

    var $div = $('div');
    console.log($div);
    
    jQuery中的静态方法
    • each
    /*
    * jQuery的each静态方法
    * 第一个参数:当前遍历到的索引
    * 第二个参数:遍历到的元素
    * jQuery的each方法可以遍历伪数组
    * */
    $.each(arr, function (index, value) {
        console.log(index, value);
    });
    $.each(obj, function (index, value) {
        console.log(index, value);
    });
    
    • map
    /*
    * jQuery的map静态方法
    * 第一个参数:要遍历的数组
    * 第二个参数:每遍历一个元素之后执行的回调函数
    * 回调函数的参数:
    * 第一个参数:遍历到的元素
    * 第二个参数:遍历到的索引
    * jQuery的map方法可以遍历伪数组
    * */
    $.map(arr, function (value,index) {
        console.log(index, value);
    });
    
    $.map(obj, function (value,index) {
        console.log(index, value);
    });
    

    jQuery的each静态方法和map静态方法的区别:

    1. each静态方法默认的返回值为当前遍历的数组或伪数组;
      map静态方法默认的返回值为空数组;
    var res1 = $.each(obj, function (index, value) {
    
    });
    var res2 = $.map(obj, function (value,index) {
        return obj;
        // return value + index;
    });
    console.log("each res = ", res1);
    console.log("map res = ", res2);
    
    1. each静态方法不支持在回调函数中对遍历的数组进行处理;
      map静态方法可以在回调函数中通过return对遍历的数组进行处理,生成一个新的数组返回;


    • $.trim()
      作用:去除字符串两端的空格
      参数:需要去除空格的字符串
      返回值:去除空格之后的字符串
    var ss = '  hahahah     ';
    var res = $.trim(ss);
    console.log('-----' + ss + '-----');    // -----  hahahah     -----
    console.log('-----' + res + '-----');   // -----hahahah-----
    
    • $.isWindow()
      作用:判断传入的对象是否是window对象
      返回值:true/false
    var arr = [1,2,3];
    var obj = {'name':'xiaolan', 'age':17};
    var f = function () {}
    var w = window;
    
    var res1 = $.isWindow(arr);
    var res2 = $.isWindow(obj);
    var res3 = $.isWindow(f);
    var res4 = $.isWindow(w);
    console.log(res1);  // false
    console.log(res2);  // false
    console.log(res3);  // false
    console.log(res4);  // true
    
    • $.isArray()
      作用:判断传入的对象是否是数组
      返回值:true/false
    var arr = [1,2,3];
    var obj = {'name':'xiaolan', 'age':17};
    
    var res5 = $.isArray(arr);
    var res6 = $.isArray(obj);
    console.log(res5);  // true
    console.log(res6);  // false
    
    • $.isFunction()
      作用:判断传入的对象是否是函数
      返回值:true/false
      注意点:jQuery本质是一个函数
    var arr = [1,2,3];
    var f = function () {}
    
    var res7 = $.isFunction(f);
    var res8 = $.isFunction(arr);
    var res9 = $.isFunction(jQuery);
    console.log(res7);  // true
    console.log(res8);  // false
    console.log(res9);  // true
    
    • holdReady
      作用:暂停/恢复入口函数的执行
    // 暂停入口函数的执行
    $.holdReady(true);
    $(function () {
        alert("ready");
    });
    
    var btn = document.getElementsByTagName('button')[0];
    btn.onclick = function () {
        // 恢复ready函数执行
        $.holdReady(false);
    }
    
    内容选择器
    • :empty
      作用:找到既没有文本内容也没有子元素的指定元素
    • :parent
      作用:找到有文本内容有子元素的指定元素
    • :contains(text)
      作用:找到包含指定文本内容的指定元素
    • :has(selector)
      作用:找到包含指定子元素的指定元素
    <style>
        div{
            width: 50px;
            height: 100px;
            background-color: deepskyblue;
            margin-top: 5px;
        }
    </style>
    <script>
        $(function () {
            var $div1 = $('div:empty');
            console.log($div1);  // 找到1个
    
            var $div2 = $('div:parent');
            console.log($div2); // 找到4个
    
            var $div3 = $('div:contains("我是div")');
            console.log($div3); // 找到2个
    
            var $div4 = $('div:has("span")');
            console.log($div4); // 找到2个
        });
    </script>
    
    <body>
        <div></div>
        <div>我是div</div>
        <div>哈哈哈我是div</div>
        <div><span></span></div>
        <div><p></p></div>
    </body>
    
    属性和属性节点

    对象中保存的变量是属性;

    function Person() {
    
    }
    var p = new Person();
    p.name = 'xiaolan';
    p['age'] = 17;
    console.log(p.name, p.age);
    

    HTML标签中添加的属性 叫做属性节点;
    DOM元素的attributes属性中的所有内容都是属性节点;
    <span name="span_name"></span>

    操作属性节点:
    DOM元素.setAttribute("属性名称","值");
    DOM元素.getAttribute("属性名称");
    任何对象都有属性,但是只有DOM对象才有属性节点。

    • attr()和removeAttr()
    1. attr()
      作用:获取或者设置属性节点的值
      可以传递一个参数,也可以传递两个参数
      如果传递一个参数:代表获取属性节点的值
      如果传递两个参数:代表设置属性节点的值
      注意点:
      如果是获取,无论找到多少个元素,只会返回第一个元素指定属性节点的值;
      如果是设置,找到多少个元素,就会设置多少个元素,如果设置的属性不存在,系统会自动新增;
    console.log($('span').attr("class"));   // span1
    $('.span1').attr("class", "span3");
    console.log($('span').attr("class"));   // span3
    
    1. removeAttr()
      作用:删除属性节点
      注意点:会删除所有找到元素的指定属性节点
        <script>
            $(function () {
                console.log($('span').attr("class"));   // span1
                $('.span1').attr("class", "span3");
                console.log($('span').attr("class"));   // span3
                // $('.span1').attr("abc", "hahaha");
    
                $('.span2').removeAttr("name");
                $('.span2').removeAttr("class name");   // 删除多个属性
            });
        </script>
    
    <body>
    <span class="span1" name="aaa"></span>
    <span class="span2" name="bbb"></span>
    </body>
    
    • prop()和removeProp()
    1. prop()
      作用:获取或者设置DOM元素属性的值
    2. removeProp()
      作用:删除DOM元素属性
      特点同attr()和removeAttr();
      注意点:prop()、removeProp()也可以操作属性节点
    $('span').eq(0).prop("test","666"); // 第一个span
    console.log($('span').prop("test")); // 666
    $('span').removeProp("test");
    
    // 操作属性节点
    $('span').prop("class", "ssss");
    console.log($('span').prop("class"));
    
    console.log($('input').prop("checked"));    // true
    console.log($('input').prop("checked"));    // checked
    

    官方推荐,在操作属性节点时,具有true和false两个属性的属性节点,如checked、selected、disabled使用prop(),其它使用attr()。

    操作class属性的方法
    • addClass()
      作用:给DOM元素添加class属性
      如果要添加多个,多个类名用空格隔开。
    • removeClass()
      作用:删除DOM元素的指定class属性
      如果要删除多个,多个类名用空格隔开。
    • toggleClass()
      作用:切换class属性
      存在则删除,不存在则添加。
    <script>
        $(function () {
            var btns = $('button')
            btns[0].onclick = function () {
                $('div').addClass('class1');
                $('div').addClass('class1 class2');
            };
            btns[1].onclick = function () {
                $('div').removeClass('class2');
                $('div').removeClass('class1 class2');
            };
            btns[2].onclick = function () {
                $('div').toggleClass('class2');
                // $('div').toggleClass('class1 class2');
            };
        });
    </script>
    
    <body>
    <button>添加类</button>
    <button>删除类</button>
    <button>切换类</button>
    <div></div>
    </body>
    
    文本值相关方法
    • html()
      和原生js的innerHTML一样
    • text()
      和原生innerText一样
    • val()
    <script>
        $(function () {
            var btns = $('button');
            btns[0].onclick = function () {
                // html() 和原生js的innerHTML一样
                $('div').html('<p>我是段落<span>我是span</span></p>');    // 在div中增加html标签
            };
            btns[1].onclick = function () {
                console.log($('div').html());
            };
            // text() 和原生innerText一样
            btns[2].onclick = function () {
                $('div').text('哈哈哈哈我是div');
            };
            btns[3].onclick = function () {
                console.log($('div').text());
            };
            btns[4].onclick = function () {
                $('input').val('输入点什么呢');
            };
            btns[5].onclick = function () {
                console.log($('input').val());
            };
    
        });
    </script>
    <body>
        <button>设置HTML</button>
        <button>获取HTML</button>
        <button>设置text</button>
        <button>获取text</button>
        <button>设置value</button>
        <button>获取value</button>
        <div></div>
        <input type="text">
    </body>
    
    操作样式方法
    • 逐个设置
    $('div').css('width', '100px');
    $('div').css('height', '100px');
    $('div').css('background', 'red');
    
    • 链式设置
      注意点:链式操作如果大于三步,建议分开
    $('div').css('width','100px').css('height', '100px').css('background', 'blue');
    
    • 批量设置(推荐)
    $('div').css({
        width: "100px",
        height: "100px",
        background: "green"
    });
    
    • 获取CSS样式值
    console.log($('div').css('width')); // 100px
    
    操作尺寸和位置
    • width()
      作用:获取/设置元素宽度
    • offset()
      作用:获取/设置元素距离窗口的偏移位
    • position()
      作用:获取元素距离定位元素的偏移位
      注意:只能获取 不能设置
    <script>
        $(function () {
            var btns = $('button');
            btns[0].onclick = function () {
                // 获取元素宽度
                console.log($('.father').width()); // 200
                // offset() 获取元素距离窗口的偏移位
                console.log($('.son').offset().left);   // 150
                // position() 获取元素距离定位元素的偏移位,只能获取 不能设置
                console.log($('.son').position().left); // 50
            };
            btns[1].onclick = function () {
                // 设置元素宽度
                $('.father').width('500px');
                // 设置元素距离窗口的偏移位
                $('.son').offset({
                    left: 10
                });
                // position只能获取 不能设置
                $('.son').css({
                    left: 10
                });
            };
        });
    </script>
    <body>
        <div class="father">
            <div class="son"></div>
        </div>
        <button>获取</button>
        <button>设置</button>
    </body>
    
    • scrollTop()
      获取滚动的偏移位
    console.log($(".scroll").scrollTop());
    

    获取网页滚动的偏移位
    注意点:为了保证浏览器的兼容 按照如下写法(IE认为网页滚动是body,其它浏览器是html)

    console.log($("html").scrollTop() + $("body").scrollTop());
    

    设置滚动的偏移位

    $(".scroll").scrollTop(300);
    

    设置网页滚动的偏移位

    $("html,body").scrollTop(300);
    

    相关文章

      网友评论

          本文标题:jQuery-01

          本文链接:https://www.haomeiwen.com/subject/pvxzectx.html