jQuery绑定事件

jQuery绑定事件

jQuery 通过.bind()方法来为元素绑定这些事件。可以传递三个参数:bind(type, [data], fn), type 表示一个或多个类型的事件名字符串;[data]是可选的,作为 event.data 属性值传递一个额外的数据,这个数据是一个字符串、一个数字、一个数组或一个对象;fn 表示绑定到指定元素的处理事件函数。

使用点击事件

在这里插入图片描述
在这里插入图片描述

可以同时绑定多个事件

在这里插入图片描述

通过对象键值对绑定多个参数

在这里插入图片描述

使用 unbind 删除绑定的事件

注意jQuery中的.unbind()只能解除jQuery绑定事件,不能解除原生dom对象绑定的事件;
注意:jQuery中的.unbind()解除所有jQuery绑定事件。

在这里插入图片描述

使用 unbind 参数删除指定类型事件

在这里插入图片描述

使用 unbind 参数删除指定处理函数的事件

在这里插入图片描述

简写事件

简写事件绑定方法

在这里插入图片描述
在这里插入图片描述
注意:jQuery事件简写等价于jQuery中的bind()
在这里插入图片描述
优化:Resize事件
在这里插入图片描述
表单提交事件:submit()
在这里插入图片描述
注意:
其中 return true:执行表单提交;
其中return false:不执行表单提交;

事件对象

回顾原生js事件中的对象:
常用的类型:pageX,pageY, target,type…
在这里插入图片描述
pageY,screenY,clientY的区别:

在这里插入图片描述
在这里插入图片描述

event.result

在这里插入图片描述

Event.keyCode

在这里插入图片描述

冒泡和默认行为

原生js中的表现方式:

阻止冒泡行为

event.preventDefault();

阻止浏览器默认行为

event.stopPropagation();

jQuery中事件对象的方法如下:
在这里插入图片描述
在这里插入图片描述
案例:
阻止事件冒泡行为
阻止浏览器自带的默认行为
在这里插入图片描述
使用$(“表单”).submit()方法提交表单,写法如下:
在这里插入图片描述

同时阻止默认行为且禁止冒泡行为

  • 方式一:
    可以把两个方法同时写上:event.stopPropagation()和 event.preventDefault()
  • 方式二:
    使用return false;
    在这里插入图片描述

高级事件

知识点:
1.模拟操作
2.命名空间
3.事件委托
4.on、off 和 one

模拟操作:trigger(“事件名”)
使用$(dom).trigger(“事件名”);
在这里插入图片描述
写法二:
在这里插入图片描述

trigger传入参数写法:

有时在模拟用户行为的时候,我们需要给事件执行传递参数,这个参数类似与 event.data 的额外数据,可以可以是数字、字符串、数组、对象。
在这里插入图片描述

绑定用户自定义事件:

在这里插入图片描述

快捷方式的书写方式

$('input').click(function () {
alert('我的第一次点击来自模拟!');//空的 click()执行的是 trigger()
}).click();

这种便捷的方法,jQuery 几乎个所有常用的事件都提供了。
在这里插入图片描述

triggerHandle

jQuery 还提供了另外一个模拟用户行为的方法:.triggerHandler();这个方法的使用和.trigger()方法一样。

$('input').click(function () {
alert('我的第一次点击来自模拟!');
}).triggerHandler('click');

Trigger()和triggerHandle()方法的区别

  • 1…triggerHandler()方法并不会触发事件的默认行为,而.trigger()会。

    $(‘form’).trigger(‘submit’); //模拟用户执行提交,并跳转到执行页面
    $(‘form’).triggerHandler(‘submit’); //模拟用户执行提交,并阻止的默认行为

如果我们希望使用.trigger()来模拟用户提交,并且阻止事件的默认行为,则需要这么写:

$('form').submit(function (e) {
e.preventDefault(); //阻止默认行为
}).trigger('submit');
  • 2.triggerHandler()方法只会影响第一个匹配到的元素,而.trigger()会影响所有。

  • 3…triggerHandler()方法会返回当前事件执行的返回值,如果没有返回值,则返回undefined;而.trigger()则返回当前包含事件触发元素的 jQuery 对象(方便链式连缀调用)。

    alert($('input').click(function () {
          return 123;
          }).triggerHandler('click'));//返回 123,没有 return 返回
    

在这里插入图片描述

命名空间

解决的问题:有时,我们想对事件进行移除。但对于同名同元素绑定的事件移除往往比较麻烦,这个时候,可以使用事件的命名空间解决。
代码如下:
在这里插入图片描述
委托方案如下:
在这里插入图片描述

注意:使用.bind()不具备动态绑定功能

案例:
在这里插入图片描述

jQuery委托方案二:使用delegate()和undelegate()

在这里插入图片描述

jQuery委托方案三:使用on和off

在这里插入图片描述

on、off的使用方式

替代.bind()方式

$('.button').on('click', function () {
alert('替代.bind()');
});

替代.bind()方式,并使用额外数据和事件对象

$('.button').on('click', {user : 'Lee'}, function (e) {
alert('替代.bind()' + e.data.user);
});

替代.bind()方式,并绑定多个事件

$('.button').on('mouseover mouseout', function () {
alert('替代.bind()移入移出!');
});

替代.bind()方式,以对象模式绑定多个事件

$('.button').on({
mouseover : function () {
alert('替代.bind()移入!');
},

mouseout : function () {
alert('替代.bind()移出!');
}
});

替代.bind()方式,阻止默认行为并取消冒泡

$('form').on('submit', function () {
return false;
});

或$(‘form’).on(‘submit’, false);

替代.bind()方式,阻止默认行为

$('form').on('submit', function (e) {
e.preventDefault();
});

替代.bind()方式,取消冒泡

$('form').on('submit', function (e) {
e.stopPropagation();
});

替代.unbind()方式,移除事件

$('.button').off('click');
$('.button').off('click', fn);
$('.button').off('click.abc');

猜你喜欢

转载自blog.csdn.net/knowledge_bird/article/details/87912902