使用jQuery以编程方式触发所有事件?还有一些重要的差异需要记住,当一个人使用jQuery Vs触发事件时,它是一种自然的触发方式吗?
答案 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中trigger
和triggerHandler
之间的差异。
<强>触发强>
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)