搜索

首页  >  问答  >  正文

javascript - 请教 jquery 中 trigger('click') 和 click() 的区别与优劣。

$('#btn').trigger('click');
$('#btn').click();

求教这两种 click 事件的触发方式选择哪种更优?

为情所困为情所困2697 天前909

全部回复(3)我来回复

  • phpcn_u1582

    phpcn_u15822017-06-26 11:00:52

    jquery2的源码

    jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
        "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
        "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
    
        // Handle event binding
        jQuery.fn[ name ] = function( data, fn ) {
            return arguments.length > 0 ?
                this.on( name, null, data, fn ) :
                this.trigger( name );
        };
    });

    看起来,$对象的click执行事件实现也是调用trigger……所以trigger更优?= =||跟 @MockingBird 的想法不同- -

    回复
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-26 11:00:52

    trigger() 主要用来触发自定义事件

    $( "#foo" ).on( "custom", function( event, param1, param2 ) {
      alert( param1 + "\n" + param2 );
    });
    $( "#foo").trigger( "custom", [ "Custom", "Event" ] );

    @Dont 贴出了 jquery 源码, 其实 .click() 也是直接调用 .trigger() 方法,所以性能上应该是一样的。

    回复
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-26 11:00:52

    就像jQuery.post()和jQuery.ajax()哪个更优??

    明明可以猜到post肯定是调用了ajax, 那就用ajax? 就因为少了一次函数调用?然后多打好些字?浪费时间?

    没有什么优不优的,你要想想别的方面, 简洁,易懂也很重要。

    回复
    0
  • 取消回复