jquery

一,节点的操作
    1, 创建节点
        const oDiv = $('<div id="" class="" index="">div标签</div>');

        const oDiv = $('div' , { id:'div' , class:'div' , click : function(){} });

    2, 写入节点 : 8种形式
        父子:
            在最后
                $(父级标签).append(子级标签)
                子级标签.appendTo( $(父级标签) )

            在起始
                $(父级标签).prepend(子级标签)
                子级标签.prependTo( $(父级标签) )
        兄弟
            在之后
                $(已有标签).after(写入的标签)
                写入的标签.insertAfter( $(已有标签) )

            在之前
                $(已有标签).before(写入的标签)
                写入的标签.insertBefore( $(已有标签) )

    3, 删除节点
        $().empty()   
            清空当前标签,删除当前标签的所有内容,保留标签的属性,属性值等

        $().remove()
            彻底删除当前标签,整个标签都不存在了

    4, 替换节点
        两种语法,作用相同,也是为了满足不同的链式编程
        替换所有设定的标签

        $(已有标签).replaceWith(要写入的标签)
            
        要写入的标签.replaceAll( $(已有标签) )

    5, 节点克隆
        $().clone()
            参数1:
                默认值是false,不克隆标签上绑定的事件
                定义为true,克隆标签上绑定的事件
            参数2:
                只有第一个参数设定为true时,才起作用
                默认值是true,是否克隆子级标签上绑定的事件
                设定是false,不克隆子级标签上绑定的事件
        一般要克隆当前标签和子级标签的事件,只写参数1,为true就可以了
            $().clone(true);

        只克隆当前标签上绑定的事件,不克隆子级标签上绑定的事件
            $().clone(true , false);

二, jquery的动画

    1, 标准动画
        从左上角或者右上角开始,将标签运动至指定位置
        运动时,标签改变 宽高 和 透明度

        $().show(时间,线性,函数)      显示
        $().hide(时间,线性,函数)      隐藏
        $().toggle(时间,线性,函数)    切换 -- 显示就隐藏,隐藏就显示

    2, 折叠动画
        从当前位置,上卷隐藏,下拉显示
        改变的是高度

        $().slideDown(时间,线性,函数)      显示
        $().slideUp(时间,线性,函数)        隐藏
        $().slideToggle(时间,线性,函数)    切换 -- 显示就隐藏,隐藏就显示
        
    3, 渐隐渐现
        在当前位置,改变透明度

        $().fadeIn(时间,线性,函数)        显示
        $().fadeOut(时间,线性,函数)       隐藏
        $().fadeToggle(时间,线性,函数)    切换 -- 显示就隐藏,隐藏就显示

    4, 自定义动画
        $().animate({运动方式},时间,线性,函数)

    5, 结束动画
        $().stop().动画    触发动画时,之前的动画,从运动到的当前位置,直接执行触发的动画
        $().finish().动画  触发动画时,之前的动画,从运动的目标终止位置,执行执行触发的动画
        特别注意  finish 和 stop 都是终止的之前的动画
                    我们只要明白,为什么加,在什么地方加,就可以了,使用哪个,看实际项目需求

        动画的执行,默认值是执行完上一个动画,再执行下一个动画

        例如,手风琴效果
            如果不添加停止动画,鼠标移动过快,即时鼠标移出 手风琴demo区域 ,之前没有执行完的动画,仍然你会继续执行
            必须要添加停止动画,确保,触发了新动画,之前的动画,不再执行,立即执行新的动画

            实际项目中,所有的动画执行一般之前都要添加停止动画
            至于加什么,看项目需求,喜欢加那个就加那个

三, 获取占位和位置 --- 与JavaScript很相似
    
    1, 获取尺寸
        可以通过获取css样式来获取尺寸

        $().width()    $().height()
            获取 内容 : width / height
            有 box-sizing:border-box : width / height -padding -border

        $().innerWidth()    $().innerHeight()
            获取 内容 + padding : width / height + padding
            有 box-sizing:border-box : width / height  -border

        $().outerWidth()    $().outerHeight()
            获取 内容 + padding + border : width / height + padding + border
            有 box-sizing:border-box : width / height 

        $().outerWidth(true)    $().outerHeight(true)
            获取 内容 + padding + border + margin : width / height + padding + border + margin
            有 box-sizing:border-box : width / height + margin            

    2, 获取占位

        $().offset()
            可以获取,可以设定
            获取的是,标签对象与页面左上角的间距
            设定的也是标签与页面左上角的间距
            执行结果是一个对象
        
        $().position()
            只能获取,不能设定
            获取的是,标签对象与定位父级之前,定位属性的间距
            不算margin只算定位

    3, 获取滚动
        $(window).scrollTop      $(window).scrollLeft
        $('html').scrollTop      $('html').scrollLeft
        
        获取设定使用 window 或者 html 都可以
        如果使用 自定义动画 animate() 必须是 $('html')