jQuery的DOM、BOM和事件

1.eachextend

(1) $.each()

① jQuery的循环方法

② 用法:$(要循环的数组/对象,function(idx,item){})

③ 注意:传入的函数中 第一个形参表示数组项索引 第二个形参表示每一个数组项

④ 如果循环的是对象 第一个参数表示属性名 第二个参数表示属性值

⑤ 在传入的函数中 如果循环对象 this指向对象的属性值  如果循环数组 this指向数组的数组项

 

(2) jQuery对象.each()

① 专门用来循环jQuery对象的方法

② 用法:jQuery元素.each(function(idx,item){})

③ 注意:idx表示每一个元素的索引, item表示jQuery元素中包含的每一个dom元素

④ 在传入的函数中,this指向jQuery元素中包含的每一个dom元素

⑤ 应用环境:当我们需要使用元素索引的时候,就可以使用each方法来得到

 

(3) $.extend

① jQuery中用来合并对象

② 用法:$.extend(对象1,对象2,对象3...)

③ 作用:将所有对象的属性 拼接进 对象1

④ 注意:在拼接之后 只会修改第一个对象,不会影响其他对象

⑤ Extend深拷贝

1) $.extend(true,对象1,对象2.....);

 

2.jQueryBOM

(1) Jquery操作元素宽高

① widthheight

1) Widthheight:获取元素宽高  只包含元素的纯宽高

2) innerWidthinnerHeight:获取元素宽高 包含元素自身宽高+padding

3) outerWidth outerHeight:获取元素宽高 包含元素自身宽高 + padding + border

4) outerWidth/Height(true) 获取元素宽高 包含元素自身宽高 + padding + border + margin

 

(2) jQuery操作元素的位置

① Position

1) 

2) Top:当前元素相对于带定位父元素顶部的距离

3) Left:当前元素相对于带定位父元素左侧的距离

② OffsetjQuery元素.offset()  得到的结果是一个对象

1) 

2) Top:当前元素相对于页面顶部的距离

3) Left:当前元素相对于页面左侧的距离

(3) Jquery操作滚动条

① scrollTop

1) 获取元素内容被卷去的高度

2) 用法:jQuery元素.scrollTop()

② scroll

1) 滚动条滚动事件  当滚动条发生滚动的时候 触发

2) 用法:jQuery元素.scroll(function(){})

 

3.jQueryDOM

(1) 创建节点

① 原生js创建节点:createElement创建元素节点 createTextNode创建文本节点

② jQuery创建节点:$(“<div>张三叫狗蛋</div>”)

 

(2) 追加节点

① 原生js追加节点:ppendChild(要追加的元素)   insertBefore(新子元素,旧子元素)

② jQuery追加节点:

1) append$(父元素).append(新子元素);

2) appendTo: $(新子元素).appendTo(父元素);

3) prepend$(父元素).prepend(新子元素);

4) prependTo$(新子元素).prependTo(父元素);

5) before $(参考元素).before(新子元素)

6) insertBefore$(新子元素).insertBefore(参考节点)

7) after$(参考元素).after(新子元素)

8) insertAfter:$(新子元素).insertAfter(参考节点)

 

(3) 移除节点

① removejQuery元素.remove() 可以将jQuery元素移除 会将元素的事件一起删掉

② detachjQuery元素.detach() 可以将jQuery元素移除 会将元素的事件保留下来

③ emptyjQuery元素.empty()  可以将jQuery元素中的内容全部清空

 

(4) 替换节点

① replaceWith

1) 用法:旧节点.replaceWith(新节点)

2) 作用:使用新节点 替换旧节点,可以批量替换

② replaceAll

1) 用法:新节点.replaceAll(旧节点)

2) 作用:使用新节点 替换旧节点,也可以批量替换

 

(5) 包裹节点

① jQuery对象.wrap()

1) $('span').wrap('<div>'); // 每个span外面包裹一个div  

② jQuery对象.wrapAll()  

1) $('span').wrapAll('<div>'); // 所有的span外面包裹一个div

③ jQuery对象.wrapInner()  

1) $('span').wrapInner('<i>'); // 每个span的里面包裹一个i标签

④ jQuery对象.unwrap()

1) $('span').unwrap(); // 删除外面的父级,如果父级是body,则不能删除

 

4.jQuery的事件

(1) 事件对象

① 基础的添加事件方式:jQuery元素.事件名称(function(){处理函数})

② jQuery中,事件处理函数的第一个形参 就是事件对象

③ 

④ 事件对象的重要属性

1) clientXclientY:鼠标的位置,可视区为基准点

2) pageXpageY:鼠标的位置,页面为基准点

3) target事件目标

4) ctrlKeyaltKeyshiftKey:功能键

5) ev.which 相当于keyCode,keyCode强大,还可以记录鼠标的键值,123(左中右);

6) ev.delegateTarget 事件绑定的对象 不常用,一般用this代替

 

(2) 事件绑定

① jQuery元素.on(事件名称,处理函数)

② 批量绑定事件

1) jQuery元素.on(事件名1 事件名2 .....”,处理函数)

  1. 缺点:所有事件 只能共用一个处理函数

2) jQuery元素.on({事件名1function(){},事件名2function(){},.....})

③ 自定义事件

1) jQuery元素.on(“自定义事件名”,处理函数)

2) jQuery元素.trigger(“自定义事件名”) 什么时候调用trigger 什么时候自定义事件触发

 

(3) 事件委托

① jQuery父元素.on(“事件名称”,”子元素选择器”,处理函数)

 

(4) 事件解绑

① jQuery元素.off(“事件名称”)  可以解绑掉jQuery元素身上的这一类事件

② 弊端:off方法解绑事件比较武断,某些时候我们只想移除掉一个事件不想移除掉其他同类事件 off无法单独完成。

 

(5) 命名空间

① 类似于css的类名,在绑定事件的时候 给事件名后面加上  .命名空间名

1) 这样每一个事件就会有自己单独的命名空间 删除事件的时候 就可以根据命名空间进行删除

2) 

(6) One

① 给元素绑定一个只执行一次的事件

② 用法:jQuery元素.one(“事件名称”,function(){})

 

(7) Hover

① Hover其实就是将 mouseentermouseleave两个事件合并为了一个事件

② 用法:jQuery元素.hover(function(){},function(){})

1) 第一个函数在鼠标移入时触发

2) 第二个函数在鼠标移出时触发

③ Mouseentermouseleave mouseover mouseout的区别是 前者不冒泡,后者冒泡

 

(8) 阻止冒泡

① jQuery中 我们还是使用事件对象的stopPropagation方法来阻止冒泡

 

4.jQuery源码拓展

(1) $.each()

(2) $(“选择器”).each()

(3) $(dom元素)   $(function(){})

(4) 从上述内容 我们发现 $是一个函数 且 具备对象的身份

(5) 

① 从这一行代码我们知道 $===jQuery  jQuery是什么

(6) 

① 从这一行我们知道jQuery是一个函数

② 这个函数的返回值是一个对象

(7) 总结:由此我们得知 $ === jQuery === 函数

① 我们也称 $jQuery函数  jQuery函数的返回值就是jQuery对象

posted @ 2020-10-14 10:20  石海莹  阅读(304)  评论(0编辑  收藏  举报