jq要注意的点

查找下标

JQ对象查找指定下标的方法为:eq()
get()方法也是查找指定下标的,但返回的是dom元素
eg:今天写一个导航条绑定鼠标进入事件时播放指定音乐,因为JQ中没有封装audio 和 video de 的方法,所以play的方法要绑定在DOM元素上 : ( " a u d i o " ) . g e t ( ("audio").get( ("audio").get((this).index()).play(); 这时如果要是使用eq的话就不对了。

一个报错

但是这时报错了Uncaught (in promise) DOMException: play() failed because the user didn’t interact with the document first.
原来在Chrome 4月份更新了版本后,autoplay政策做了更改
解决方法:打开chrome://flags/#autoplay-policy
把Default修改为 No user gesture is required

prop方法

prop()方法 是操作元素的属性
attr()方法是操作标签的属性
对于一些特殊的属性 eg:checked, selected ,disabled 这些值为布尔值的属性,无法使用attr方法设置,因为JQ对于未设置的这些特殊属性会返回undefined,所以要用prop方法
用法和attr相同 eg:prop(“checked”,“true”)

动画队列

JQ中会把动画放在一个动画队列中。如果调用多个动画,它也会按照顺序挨个执行,不会覆盖,也会把动画保存好,但同时不好的地方也出现了。如果有一个鼠标进入触发动画的函数,用户多次触发并速度很快,那么鼠标离开后 ,它仍然会执行,直到动画队列中的动画执行完。
解决方法:stop()方法 停止正在执行的动画
在动画方法前调用此方法就可以解决动画队列的问题。
stop(clearQueue,jumpToEnd) 参数值都为布尔型
clearQueue :是否清除动画队列
jumpToEnd :是否跳转到当前动画的最终效果
不传参默认都为 false。

index()方法

JQ中的index()方法会返回当前元素在所有兄弟元素中的索引

<li><a href=""></a>
<li><a href=""></a>
<li><a href=""></a>
如果给a标签使用index()方法就只会显示0,要对li标签使用此方法

删除节点

remove()和detach()都是删除节点。
区别:remove方法会删除自身元素及其内容,也会删除事件监听和数据。
detach方法只删除元素本身及其内容。
两种方法都会保留 jQuery 对象中的匹配的元素,返回的是被选择的这个元素,所以可以在将来再使用这些匹配的元素。
所以在进行大规模的增删改时我们可以先把一个元素提取出来,在此元素上面进行操作,在重新添加到页面中,就减少了对DOM的操作的修改,从而减少了页面重绘,但是这种时候最好使用detach()方法,因为此方法不会删除自身的事件及数据。

data方法

从1.4.3开始我们通过自定义属性给元素绑定数据,也会被自动的添加到jQuery的数据对象中,因此我们也可以通过data方法操作。
获取:.data(属性名) 不传参是获取所有的
设置:data(属性名:属性值)
删除:removeData(属性名)

事件委托

我们可以使用on方式来绑定简单的事件
eg:$(’#box’).on(‘click’,function(){})
但是如果我们的页面中动态添加的元素不会被绑定到此事件,所以我们可以使用事件委托的方式;
语法:父元素.on(事件类型,事件委托的子元素,传递给处理函数的数据,事件处理函数)
原理:通过给父元素注册事件委托,但子元素身上其实是没有事件的。利用了事件冒泡,触发父元素事件,把事件分发给了子元素,最终还是由子元素执行的。支持动态创建添加的元素。
传递的数据:传递给处理函数的数据,事件触发时可以通过event.data来使用

克隆节点

clone(true) 深复制,复制自身及其子元素,并复制其事件和数据
clone(false) 浅复制,复制自身及其子元素,不复制其事件和数据
clone(true,false) 复制自身及其子元素,并复制父元素的事件和数据但不会复制子元素的事件和数据
只要第一个参数为false,则无论第二个参数无论设置成什么,都为false

$冲突

如果我们一个页面引入多个框架,可能会导致$冲突的问题,默认后面会覆盖前面的,那么在jQuery拿到控制权的前提下,jQuery给我们提供了释放$控制权的方法。
$.noConflict() 我们可以使用一个变量来接受一下,用来代替$
在没有控制权时也可以使用jQuery来代替$

制作jQuery插件

我们可以通过给$.fn 添加方法开扩展jQuery对象
$.fn等价于jQuery.prototype

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值