jQuery自动触发事件

早过忘川 提交于 2019-12-08 11:49:20

触发事件

       事件都是在特定条件下发生的,不同类型的事件触发的实际时机是无法预测的。开发者无法知道用户何时单击按钮提交表单,或者何时输入文本。但是在很多情况下,开发人员需要在脚本中控制事件触发的实际。

       例如,设计一个弹出广告,虽然广告画面提供了允许用户关闭的广告按钮,但是也应该设计一个条件,控制广告在显示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()

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!