事件传播事件绑定

时间:2017-02-16 10:21:16

标签: javascript jquery event-binding

有什么不同: -

$("#btn").click(handler);

$("#btn").on('click', handler);

以上两者都会将处理程序绑定到click事件上的元素。何时使用哪一个?

2 个答案:

答案 0 :(得分:1)

从jquery源代码.click可以看出,它只是一个辅助函数。在内部,它将呼叫映射到this.on( name, null, data, fn )。因此,它比其他任何东西都更方便,所有这些函数都会调用.on

附加。你也可以在没有params的情况下触发这个事件,这是if语句中的简写。这将触发正在调用的元素上的DOM事件,例如使用$button.click()模拟点击,这又是$button.trigger('click')的简写。

jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
    "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
    "change select submit keydown keypress keyup 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 );
    };
});

答案 1 :(得分:1)

.click()方法只是.on(“click”,handler)的简写。有关详细信息,您可以看到此链接https://api.jquery.com/click/