JQuery笔记

>jQuery

* 是什么:what?

- 是一个JS函数库:write less,do more

- 封装简化DOM操作(CRUD)/Ajax

* 为什么用它:why?

- 强大的选择器:方便快速查找DOM元素

- 隐式遍历(迭代):一次操作多个元素

- 读写合一:读数据/写数据用的是一个函数

- 事件处理

- 链式调用

- DOM操作(CUD)

- 样式操作

* 如何使用:How?

* 引入jQuery

* 本地引入与CDN远程引入

* 测试版本(未压缩版)与生产版本(压缩版)

* 使用jQuery

* 使用jQuery核心函数:$/jQuery

* 使用jQuery对象:$xxx( 执行$( )得到 )

* jQuery的两把利器

*jQuery函数:$/jQuery

* jQuery向外暴露的就是jQuery函数,可以直接使用

* 当成一般函数使用:$( param )

* param是function:相当于window.onload = function(文档加载完成的监听)

* param是选择器字符串:查找所有匹配的DOM元素,返回包含所有DOM元素的jQuery对象

* param是DOM元素:将DOM元素对象包装为jQuery对象返回$( this )

* param是标签字符串:创建标签DOM元素对象并包装为jQuery对象返回

* 当成对象使用:$.xxx

* each( obj/arr , function( key, value ){ } )

* trim( str )

* jQuery对象

* 包含所有匹配的n个DOM元素的维数组对象

* 执行$( )返回的就是jQuery对象

* 基本行为:

* length/size( ):得到dom元素的个数

* [ index ]:得到指定下标对应的dom元素

* each( function( index , domEle ){ } ):遍历所有dom元素

* index( ):得到当前dom元素在所有兄弟中的下标

>事件的委托(委派/代理)

例:

<ul>

  <li></li>

  <li></li>

  <li></li>

    ....

</ul>

1)事件的委托

* 将多个子元素的事件监听委托给父辈元素处理

* 监听回调是加在了父辈元素上

* 当操作任何一个子元素时,事件会冒泡到父辈元素

* 父辈元素不会直接处理事件,而是根据event.target得到发生事件的子元素,通过这个子元素调用事件回调函数

2)事件委托的2方:

* 委托方:li(业主)

* 被委托方:ul(中介)

3)使用事件委托的好处

* 添加新的子元素,自动有事件响应处理

* 减少事件监听的数量:n==>1

4)jQuery的事件委托API

* 设置事件委托:$( parentSelector ).delegate( childrenSelector, eventName , callback )

* 移除事件委托:$( parentSelector ).undelegate( eventName )

>jQuery语法

1)CSS模块

- style样式

* css ( styleName ):根据样式名得到对应的值

* css ( styleName , value ):设置一个样式

* css ( { 多个样式对 } ):设置多个样式

- 位置坐标

* offset( ):读/写当前元素坐标(原点是页面左上角)

* position( ):读当前元素坐标(原点是父元素左上角)

* scrollTop( )/scrollLeft( ):读/写元素/页面的滚动条坐标

- 尺寸

* width( )/height( ):width/height

* innerWidth( )/innerHeight( ):width + padding

* outerWidth( false/true )/outerHeight( false/true ):width + padding + border  ( + margin ),如果是true,就加上margin。默认是false,不加margin

2)筛选模块

- 过滤

* 在jQuery对象内部的元素中找出部分匹配的元素,并封装成新的jQuery对象返回

* first( )

* last( )

* eq( index )

* filter( selector ):对当前元素提要求

* not( selector ):对当前元素提要求,并取反

* has( selector ):对子孙元素提要求

- 查找

* 查找jQuery对象内部的元素的子孙/兄弟/父母元素,并封装成新的jQuery对象返回

* children( selector ):子元素

* find( selector):后代元素

* prevAll( selector ):前面的所有兄弟

* siblings( selector ):所有兄弟

* parent( ):父元素

3)文档处理(CUD)模块

- 增加

* append( )/appendTo( ):插入后部

* preppend( )/preppendTo( ):插入前部

* before( ):插到前面

* after( ):插到后面

- 删除

* remove( ):将自己及内部的孩子都删除

* empty( ):掏空(自己还在)

- 更新

* replaceAll( ):生成一个元素替换掉另一个元素

* replaceWith( ):将原有的一个元素替换掉另一个

4)事件模块

- 绑定事件

* eventName( function( ){ } )

* on( "eventName" , function( ){ } )

* 常用:click( ) , mouseenter( )/mouseleave( )  mouseover( )/mouseout( ) , focus( )/blur( ) , hover( function( ){ } , function( ){ }  )

- 解绑事件

* off( "eventName" )

- 事件委托

* 理解:将子元素的事件委托给祖先元素

~ 事件监听绑定在父元素上,但是事件发生在子元素

~ 事件会冒泡到父元素

~ 但最终调用事件回调函数的是子元素(通过event.target)

* 好处

~ 新增的元素没有事件监听

~ 减少监听的数量(n==>1)

* 编码

~ delegate( "selector" , "eventName" , function( ){ } )  //回调函数中的this是子元素

~ undelegate( "eventName" )

- 事件坐标

~ event.offsetX/Y:原点是当前元素左上角

~ event.clientX/Y:原点是视窗左上角

~ event.pageX/Y:原点是页面左上角

- 事件相关

* 停止事件冒泡:event.stopPropagation( )

* 阻止事件的默认行为:event.preventDefault( )

>动画

* 淡入淡出:不断改变元素的透明度( opcity )实现

* 滑动:不断改变元素的高度实现

* 显示与隐藏:默认没有动画,添加时间之后的动画是通过改变opacity、height、width来实现

* 动画animate( ):animate( { 结束时的样式 } , time , function( ){ } )

* 结束动画sotp( )

>onload与ready的区别

区别:window.onload 与 $( document ).ready( )

- window.onload

* 包括页面的图片加载完成后才会回调(晚)

* 只能有一个监听回调

- $( document ) . ready( )

* 等同于:$( function( ){ } )

* 页面加载完成后就回调(不包括图片,比较早)

* 可以有多个监听回调

>插件机制

- 扩展jQuery函数对象的方法

$.extent( {

xxx : function( ){ }    //this是$

} )

调用方法:$.xxx( )

  - 扩展jQuery对象的方法

$.fn.extent( {

xxx : function( ){ }    //this是jQuery对象

} )

调用方法:$.obj.xxx( )

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容