[英]jQuery programmatically trigger events
什么所有事件都可以使用 jQuery 以编程方式触发? 当一个人使用 jQuery Vs 进行事件触发时,是否有任何重要的区别需要记住?
每个事件都可以以编程方式触发,只需使用它的无回调版本即可。
例子:
$('#button').click(function() { alert('event hanlder'); });
$('#button').click(); // generate the event
关于您的第二个问题,本机和 jQuery 事件处理程序之间应该没有区别。
一件很巧妙的事情是 jQuery 将this
绑定到接收事件的元素,在回调内部(这不会发生在本机事件处理程序中):
$('#button').click(function() { alert(this); }); // here 'this' == document.getElementById('button');
警告:引用的元素this
是不是“jQuery的增强”。 如果你想用 jQuery 的优点遍历或修改它,你必须做类似var $this = $(this);
事情var $this = $(this);
您应该知道 jQuery 中trigger
和triggerHandler
之间的区别。
扳机
trigger
尽可能最好地复制自然事件的尝试。 被触发的事件的事件处理程序会被执行,但默认的浏览器操作不会总是被完全复制。 例如$('a#link).trigger('click');
将执行绑定到链接click
事件处理程序的 javascript 函数,但不会像普通单击那样将浏览器重定向到锚点的href
。 例如: http : //jsfiddle.net/AxFkD/
trigger
调用的所有简短形式的行为都与trigger
IE 完全相同。 click()
, mouseup()
, keydown()
等
触发器处理程序
triggerHandler
防止冒泡(EX. http://jsfiddle.net/LmqsS/ ),它避免了默认的浏览器行为,只执行事件回调,它返回事件处理程序的返回值而不是用于链接的 jQUery 对象。
您还应该知道trigger
会影响选择器匹配的所有元素,但triggerHandler
只影响第一个 EX: http : //jsfiddle.net/jvnyS/
您可以以编程方式触发任何事件。 但是大多数事件不能使用程序触发器模拟为自然事件。
//触发一个按钮的点击事件
$("buttonSelector").trigger("click");
首先,由于显而易见的原因,您无法触发就绪事件。
也就是说, trigger() 引发的事件的行为方式与它们由用户触发的方式相同。 特别是,事件处理程序以相同的顺序调用。
我所知道的唯一区别是,在旧版本的 jQuery 中,触发事件不会使 DOM 树冒泡(该行为在 1.3 版中已修复)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.