jQuery以编程方式触发事件

时间:2011-08-01 17:51:22

标签: javascript-events javascript jquery

使用jQuery以编程方式触发所有事件?还有一些重要的差异需要记住,当一个人使用jQuery Vs触发事件时,它是一种自然的触发方式吗?

4 个答案:

答案 0 :(得分:2)

每个事件都可以通过编程方式触发,只需使用它的无回调版本。

示例:

$('#button').click(function() { alert('event hanlder'); });

$('#button').click(); // generate the event

关于第二个问题,native和jQuery事件处理程序之间应该没有区别。


但有一点很简单,就是jQuery将this绑定到接收事件的元素,在回调中(在本机事件处理程序中不会发生这种情况):

$('#button').click(function() { alert(this); }); // here 'this' == document.getElementById('button');

警告:this引用的元素不是“jQuery augmented”。如果你想用jQuery优点遍历或修改它,你将不得不做var $this = $(this);

之类的事情。

答案 1 :(得分:1)

您应该知道jQuery中triggertriggerHandler之间的差异。

<强>触发

trigger尝试尽可能地复制自然事件。被触发事件的事件处理程序已执行,但不会始终完全复制默认的浏览器操作。例如,$('a#link).trigger('click');将执行绑定到链接click事件处理程序的javascript函数,但不会将浏览器重定向到锚点的href,就像正常点击一样。 EX:http://jsfiddle.net/AxFkD/

trigger调用的所有简短形式都与trigger IE完全相同。 click()mouseup()keydown()

<强> triggerHandler

triggerHandler阻止冒泡(EX。http://jsfiddle.net/LmqsS/),它避免了默认的浏览器行为并且只执行事件回调,并且它返回事件处理程序的返回值而不是用于链接的jquery对象

您还应该知道trigger会影响选择器匹配的所有元素,但triggerHandler只影响第一个EX:http://jsfiddle.net/jvnyS/

答案 2 :(得分:0)

您可以通过编程方式触发任何事件。但是大多数事件都不能使用程序化触发器模拟为自然事件。

//触发按钮上的点击事件

$("buttonSelector").trigger("click");

答案 3 :(得分:0)

首先,由于显而易见的原因,您无法触发ready事件。

也就是说,trigger()引发的事件的行为方式与用户触发的事件相同。特别是,事件处理程序以相同的顺序调用。

我所知道的唯一区别是触发事件没有在旧版本的jQuery中冒出DOM树(该行为在版本1.3中得到修复)。