0

重複の可能性:
.on('click')と.click()の違い

divのクリックを処理する場合、.onと.clickの違いは何ですか。

   $('#myDiv').on('click' , function(e) {
    });


    $('#myDiv').click(function(e) {
    });
4

3 に答える 3

2

どちらも同じです...

.click内部的に.onメソッドを呼び出します。

jQueryソースコードのこの部分が表示された場合。

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 ) {
        if ( fn == null ) {
            fn = data;
            data = null;
        }

        return arguments.length > 0 ?
            this.on( name, null, data, fn ) :
            this.trigger( name );
    };

すべてのメソッドが順番にメソッドを呼び出すことがわかります.on。だから、あなたの1つのレベルを減らします。

これは、.onjQueryでの実装です。

jQuery.fn.extend({

    on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
        var origFn, type;

        // Types can be a map of types/handlers
        if ( typeof types === "object" ) {.....
于 2012-09-05T15:52:44.267 に答える
1

後者は最初のショートカットです。

.onより「低レベル」で柔軟性があります。次のように、イベントに2番目のパラメーター制約をセレクターに追加できます。

$('#myDiv').on('click' , "span.icon", function(e) {
    // this event will be fired when a click is made on a span.icon inside the #myDiv 
});
于 2012-09-05T15:53:55.530 に答える
0

ドキュメントによると、jQuery 1.7 .click()の時点で:

.bind("click", handler)このメソッドは、および のショートカットです。.on("click", handler)

于 2012-09-05T15:53:07.883 に答える