美文网首页我爱编程
jQuery动画与ajax

jQuery动画与ajax

作者: 高进哥哥 | 来源:发表于2017-04-10 00:55 被阅读0次

    1: jQuery 中, $(document).ready()是什么意思?
    $(document).ready()是当文档中的DOM节点加载完成后,在加载外部图片和资源前,执行ready()里面的操作。

    $(document).ready(function(){
        //do something
    });
    等价于
    $(function(){
        //do something
    });
    

    window.onload是整个页面加载完成(包括图片、CSS、脚本等)后,执行onload()中的操作。
    网页加载步骤:

    1.解析HTML结构
    2.加载外部脚本和样式表文件。
    3.解析并执行脚本代码
    4.构造HTML DOM结构 //ready()在此步完成后触发
    5.加载图片等外部文件
    6.页面加载文件 //load()在此步完成后触发
    

    2: $node.html()和$node.text()的区别?

    $node.html(),返回所选择元素内的html内容,包含html标签和文本内容
    $node.text(),返回所选择元素内的文本内容,不包含html标签,只包含文本内容

    3: $.extend 的作用和用法?

    $.extend()将多个对象合并到一起,可以传入多个参数。$.extend([deep,] target,…)[deep,]为布尔值默认情况不是深拷贝,可设置true为深拷贝

    var obj = {}
    var obj1 = {
        name:'gaojin',
        age:21
    }
    $.extend(obj,obj1); 
    //也可以写为
    var obj = $.extend({},obj1);
    console.log(obj) //{name:'gaojin',age:21}
    

    那这样的拷贝是深拷贝还是浅拷贝呢

    var obj = {}
    var obj1 = {
        name:'gaojin',
        age:21,
        arr:[1,2,3]
    }
    $.extend(obj,obj1);
    obj.arr[0] = 'changed';
    console.log(obj1.arr[0]) //changed
    

    可以发现是浅拷贝,都是同一个引用,那如何深拷贝呢?

    $.extend(true,obj,obj1);
    obj.arr[0] = 'changed';
    console.log(obj1.arr[0])
    

    只需传入一个参数true就可以实现深拷贝了
    当然拷贝的对象可以不只一个可以是多个,那它就会将所有对象的属性都拷贝到目标对象上,且如果重复就会发生覆盖。

    var obj = {}
    var obj1 = {
        name:'gaojin',
        age:21,
        arr:[1,2,3]
    }
    var obj2 = {
        name:'dushen',
        age:21,
        sex:'female'
    }
    $.extend(obj,obj1,obj2)
    console.log(obj) //Object {name: "dushen", age: 21, arr: Array[3], sex: "female"}
    

    可以发现相同的属性被覆盖,不同的添加到目标对象。那在日常的使用场景是什么呢?
    当我们定义一个函数,如果用户传入参数就安装参数来执行,如果没有参数就用默认参数

    function getPeople(obj) {
        var def = {
            name:'gaojin',
            age:21
        }
        var opts = {};
        $.extend(opts,def,obj);
        //再对opts进行操作
    }
    

    4: jQuery 的链式调用是什么?

    链式调用:使用jQuery方法时,对象方法返回的是对象本身,可以调用对此对象的其他jQuery方法,实现连续调用多个方法
    例:$(this).siblings().removeClass('active');

    5: jQuery 中 data 函数的作用

    jQuery.data( element, key, value ),存储任意数据到指定的元素,返回设置的值。
    element
    类型: Element
    要存储数据的DOM对象
    key
    类型: string
    存储的数据名
    value
    类型: Object
    新数据值
    jQuery.data() 方法允许我们在DOM元素上附加任意类型的数据,避免了循环引用的内存泄漏风险。如果 DOM 元素是通过 jQuery 方法删除的或者当用户离开页面时,jQuery 同时也会移除添加在上面的数据。我们可以在一个元素上设置不同的值,并获取这些值
    详细参考:http://api.jquery.com/jQuery.data/

    ##6. 写出以下功能对应的 jQuery 方法:
     <script>
        //给元素 $node 添加 class active,给元素 $noed 删除 class active
        $node.addClass("active");
        $node.removeClass("active")
        //展示元素$node, 隐藏元素$node
        $node.show();
        $node.hide();
        //获取元素$node 的 属性: id、src、title, 修改以上属性
        $node.attr("id");
        $node.attr("src");
        $node.attr("title");
        $node.attr("id", value);
        $node.attr("src", value);
        $node.attr("title", value);
        //给$node 添加自定义属性data- src
        $node.data("src", "address");
        //在$ct内部最开头添加元素$node
        $ct.prepend($node);
        //在$ct内部最末尾添加元素$node
        $ct.append($node);
        //删除$node
        $node.remove();
        //把$ct里内容清空
        $ct.empty();
        //在$ct 里设置 html < div class="btn" > </div>
        $ct.html('<div class="btn"></div>');
        //获取、设置$node 的宽度、高度(分别不包括内边距、包括内边距、包括边框、包括外边距)
        //无参数获得宽度,高度
        //有参数设置宽度,高度
        $node.width();                // width
        $node.height();               // height
        $node.innerWidth();       // width+ padding
        $node.innerHeight();      // height+ padding
        $node.outerWidth();       // width+ padding + border
        $node.outerHeight();      // height + padding + border
        $node.outWidth(true);    // width + padding + border + margin
        $node.outHeight(true);   // height + padding + border + margin
    
        //获取窗口滚动条垂直滚动距离
        .scrollTop();
        //获取$node 到根节点水平、垂直偏移距离
        $node.offset();
        //修改$node 的样式,字体颜色设置红色,字体大小设置14px
        $node.css("color":"red", "font-size":"14px");
        //遍历节点,把每个节点里面的文本内容重复一遍
        $node.each(function () {
          var text=$(this).text();
          text+=text;
        });
        //从$ct 里查找 class 为 .item的子元素
        $ct.hasClass(".item");
        //获取$ct 里面的所有孩子
        $ct.children();
        //对于$node,向上找到 class 为'.ct'的父亲,在从该父亲找到'.panel'的孩子
        $node.parent(".ct").find(".panel");
        //获取选择元素的数量
        $node.length;
        //获取当前元素在兄弟中的排行
        $node.index();
      </script>
    

    相关文章

      网友评论

        本文标题:jQuery动画与ajax

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