116

jQuery を使用してイベント ハンドラーを接続する場合、クリック メソッドの使用に違いはありますか

$().click(fn)

bind メソッドを使用する場合と比較

$().bind('click',fn);

bind のオプションの data パラメータ以外。

4

7 に答える 7

137

価値があるものについては、jQuery ソースから:

jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
    "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
    "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){

    // Handle event binding
    jQuery.fn[name] = function(fn){
        return fn ? this.bind(name, fn) : this.trigger(name);
    };
});

いいえ、違いはありません -

$().click(fn)

通話

$().bind('click',fn)
于 2009-02-06T01:30:37.367 に答える
98

マシューの答えは+1ですが、一度に複数のイベントハンドラーをバインドすることもできます。bind

$('#myDiv').bind('mouseover focus', function() {
    $(this).addClass('focus')
});

これは、以下と同等のはるかにクリーンです。

var myFunc = function() {
    $(this).addClass('focus');
};
$('#myDiv')
    .mouseover(myFunc)
    .focus(myFunc)
;
于 2009-02-06T07:35:32.980 に答える
7

2 番目のフォームを使用してカスタム イベントをバインドできるという点で、1 つの違いがあります。そうでなければ、それらは同義のようです。参照: jQuery イベント ドキュメント

于 2009-02-06T01:29:06.807 に答える
1

.click()の方がはるかに論理的だと思いますが、それがあなたの考え方だと思います。

$('#my_button').click(function() { alert('BOOM!'); });

あなたが得るのと同じくらい単純なようです。

于 2012-04-20T21:07:58.947 に答える
1

バインド時に一度だけ発生するバインドの [data] パラメータがあります。

bind の最初のパラメーターとしてカスタム イベントを指定することもできます。

于 2009-11-23T19:22:39.543 に答える
0

Google Chromeを使用している場合、開発者ツールにはイベントリスナーツールがあり、そのイベントをスパイする要素を選択します。

両方の方法を試してみると同じ結果が得られるため、同等です。

于 2010-02-10T17:05:27.797 に答える
0

.live()とのインターフェイスの一貫性のため、.bind ()を好みます。コードが読みやすくなるだけでなく、コード行を変更して、他のメソッドではなく1つのメソッドを使用するようになります。

于 2011-09-09T15:27:10.537 に答える