jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实

2020-05-29 07:30:11易采站长站整理


$( "input" ).click(
function( objEvent ){
// Alert the checkboxed status.
alert( this.checked );
}
);
$( "button" ).click(
function( objEvent ){
// Toggle checkbox checked status.
$( "input" )[ 0 ].checked = !$( "input" )[ 0 ].checked;
// Trigger ONLY click event hanlders on the checkbox.
$( "input" ).triggerHandler( "click" );
}
);

jQuery中 trigger( ) 与 triggerHandler( ) 区别
共同点:

都能触发通过 jquery 绑定的事件处理函数,如

.on()/.bind()/.click(function(){ })
这些方式;

都能触发原生元素对象上的

on{eventType}
绑定的事件处理函数;

不同点:

triggerHandler(‘event')
不会触发原生元素对象上的
.event()
方法(这种事件叫native event),而
trigger(‘event')
则会;
浏览器的默认行为其实是执行了原生元素对象上的
.event()
方法!!!

.triggerHandler()
只会触发第一个匹配的元素上的事件,而
trigger()
会触发所有匹配元素的事件;

.triggerHandler()
触发的事件不会冒泡,而
trigger()
会冒泡;

.triggerHandler()
返回值可以是任意值,如果没有明确 return 值,则为
undefined
,而.trigger()永远返回 jQuery object。所以使用.triggerHandler()时链式调用得自己实现。

使用 trigger( )与triggerHandler( )注意事项

有一次我用

trigger('click')
来触发点击事件时,鼠标并没有改变位置,也就是说鼠标焦点没有改变。测试了下发现,trigger( )与triggerHandler( )触发事件时并不会改变鼠标焦点,所以
trigger('click')
方式触发点击事件这种方式,还是和用户真正执行点击动作是不同的。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery页面元素操作技巧汇总》、《jQuery常见事件用法与技巧总结》、《jQuery常用插件及用法总结》、《jQuery扩展技巧总结》及《jquery选择器用法总结》

希望本文所述对大家jQuery程序设计有所帮助。