触发事件
事件都是在特定条件下发生的,不同类型的事件触发的实际时机是无法预测的。开发者无法知道用户何时单击按钮提交表单,或者何时输入文本。但是在很多情况下,开发人员需要在脚本中控制事件触发的实际。
例如,设计一个弹出广告,虽然广告画面提供了允许用户关闭的广告按钮,但是也应该设计一个条件,控制广告在显示3秒之后自动关闭。
也许用户可以把事件处理函数定义为独立的函数窗口,以便于直接通过名称调用她,而不需要特定的事件交互。但是如果允许直接调用事件的处理函数,会简化程序的设计,更为重要的是它的操作方便。
在传统表单设计中,表单域元素都拥有focus()和blur()方法,调用他们将会直接调用对应的focus和blur事件,是文本域获取焦点或失去焦点。
jQuery定义在脚本的控制下自动触发事件处理函数的一系列方法,其中最常用的就是trgger()方法。用法如下:
trigger(type,[data])
其中第一个参数的type表示事件类型,以字符串形式传递,第二个参数data是可选data可选参数,利用该参数可以向调用的事件处理函数传递额外的数据。
看下面的案例:
$(function(){
$("li").click(function(){
alert($(this).text());
});
$("li").mouseover(function(){
$(this).trigger("click"); //调用trigger()方法直接触发click事件
});
})
trigger()方法也会触发同名的浏览器事件默认行为。例如,如果用trigger()触发一个submit事件类型,则同样会导致浏览器提交表单。如果要阻止这种默认的行为,则可以在事件处理函数中设置返回值为false。
所有触发的事件都会冒泡到DOM树顶。例如,如果在li元素上触发一个事件,它首先会在这个元素上触发,然后向上冒泡,直到触发document对象。通过event对象的target属性可以找到最开始触发这个事件的元素。用户可以用stopPropagation()方法来阻止事件冒泡,或者在事件处理函数中返回flase即可。
triggerHandler()方法对trigger()进行补充,该方法的行为表现与trigger()方法类似,用法也相同,但是存在以下3个主要区别:
(1)triggerHandler()方法不会触发浏览器默认事件。
(2)triggerHandler()方法只触发jQuery对象集合中第一个元素的事件处理函数。
(3)triggerHandler()方法返回的是事件处理函数的返回值,而不是jQuery对象。如果最开始的jQuery对象集合为空,则这个方法返回undefined。
jQuery有一些快捷触发的方法:
blur() dblclick() keydown() select() change() error() keypress() submit()
click() focus() keyup()
来源:CSDN
作者:DengZY926
链接:https://blog.csdn.net/DengZY926/article/details/81865404