普通的事件注册不能做事件委托,且无法实现事件解绑,需要借助其他方法。不能给动态生成的元素绑定事件。
二、jQuery事件处理
1.on( )绑定事件
on( )绑定事件可以给元素绑定单个或多个事件,多个事件处理程序
元素对象.on( " 事件类型 " , function( ) { } )
元素对象.on( {
事件类型1 :function( ){ } ,
事件类型2 :function( ){ } ,
})
特殊情况:如果多个事件的处理程序完全相同,也可以用下面的格式。
元素对象.on( " 事件类型1 事件类型2 " , function( ) { } )
<div class="box"></div>
<script>
$(function () {
// 1.用on()给盒子添加多个事件
$('.box').on({
mouseover: function () {
$(this).css('backgroundColor', 'pink');
},
mouseout: function () {
$(this).css('backgroundColor', 'blue');
},
});
// 2.给多个事件添加相同的处理函数
$('.box').on('mouseover mouseout', function () {
alert('两个事件都能触发哦!');
});
});
</script>
2.事件委托
on( )绑定事件可以进行事件委托。给父亲绑定事件,让子元素触发事件。
父元素元素.on( "事件类型" , ''子元素", function( ) { } )
注意:
①只能由子元素触发事件,父元素无法触发事件。原生js中的事件委托可以由父元素或子元素触发。
②this指向子元素。
③子元素直接写选择器,不要加$。(都是血和泪啊!!!)
// 3.事件委派
$('ul').on('click','li',function () {
$(this).css('backgroundColor','brown')
})
③事件委托可以给动态生成的元素绑定事件。
3.off( )解绑事件
(1)元素对象.off( ):解绑元素的所有绑定事件
(2)元素对象.off( " 事件类型 " ):解绑指定类型的事件
(3)父元素.off( " 事件函数名 " ,"子元素" ):解除事件委托
(4)one()方法,事件只能触发一次。格式与on( )相同。
4. trigger() 自动触发事件
(1)元素对象.事件类型()
(2)元素对象.trigger( " 事件类型 " )
(3)元素对象.triggerHandler( "事件类型" )
- 区别:triggerHandler方法不会触发元素的默认行为。
5.事件对象
与原生js中使用方法一样。例如:
(1)阻止默认事件:元素对象.preventDefault( )或者return false
(2)阻止冒泡:元素对象.stopPropagation( )
6.拷贝对象
预先有两个对象,将其中一个对象的内容复制给另一个对象。
$.extend( [ deep ] ,target , obj , [ objN ] )
(1)deep:如果值为true则为深拷贝。默认为false浅拷贝。
(2)target:目标拷贝对象
(3)obj:被拷贝的对象。
(4)objN:第N号被拷贝的对象
(5)浅拷贝对于复杂数据类型只拷贝地址给目标对象,修改目标拷贝对象中的复杂数据类型 会影响被拷贝对象。(将复杂数据类型整个覆盖掉)
(6)深拷贝完全复制,修改目标拷贝对象中的复杂数据类型 不会影响被拷贝对象。(将复杂数据类型合并到一起)
(7)目标拷贝对象原来的内容重复部分会被覆盖。
三、jQuery插件
1.网址
(1) jQuery 插件库 http://www.jq22.com/
(2)jQuery 之家 http://www.htmleaf.com/
2.jQuery 插件使用步骤:
(1) 引入相关文件。(jQuery 文件 、 插件js文件、css文件)
(2) 复制相关html、css、js (调用插件)。
3.瀑布流插件
(1)到jQuery之家下载瀑布流插件压缩包并解压。
(2)把插件文件夹中的js文件夹和css文件夹复制一份,放到我们的文件夹结构中。
(3)在插件文件夹里打开index.htm,这是一个模板。打开index.html源代码。
(4)在自己的页面中引入js文件、css文件、内嵌的js样式、内嵌的css样式、html样式。
(注意路径)
(5)不同的插件会有特殊的要求。
4.图片懒加载插件
- 图片的懒加载就是:当页面滑动到有图片的位置,图片才进行加载.
- 懒加载只需引入html 和 js操作 即可,此插件不涉及css。
在vscode中 ctrl + h可以快速查找并更改页面中的所有同名字段。
5.bootstrap插件
(1)到Bootstrap官网下载插件
(2)将插件中的js文件夹复制到自己的文件结构中。
(3)在页面中引入bootstrap的css文件、jQuery文件、bootstrap的js文件、html结构。
四、其它
1.本地存储(localStorage/sessionStorage)只能存储字符串类型。
(1)JSON.stringify("数据")方法可以把其他数据类型转换成字符串,并且保留原本的格式。
(2)变回来用JSON.parse("字符串")
2.多库共存
(1)jQuery中的$符号可以用jQuery替代。
(2)var 名字 = $.noConflict( )方法可以自定义名字替代$