jQuery:$()。click(fn)と$()。bind( 'click'、fn);


115

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

$().click(fn)

bindメソッドの使用との比較

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

バインドのオプションのデータパラメータ以外。


クリックにもオプションのデータパラメータがあるようです。動作に違いがあるかどうか誰か知っていますか?出典:api.jquery.com/click
Nick Udell

回答:


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)

6
真- click()のための速記、基本的にはbind('click')、この日の年齢では、それは実際に呼び出して、(またはon('click')私はそれを見る方法、あなたは可能性があるだけでなく、自分のセーブ使って、余分な関数呼び出しという。on('click')直接。
ニックス

それらは同じことを行いますが、bind()があなたに言ってみましょう、使用がホバーやクリックなどのときに何かが起こりたいのです。例については、以下のstackoverflow.com/a/519455/292408を参照してください。もちろん、「クリック」など、1つのイベントにのみバインドできます。
Elijah Lynn

98

マシューの答えの+1、しかし私はあなたが一度に複数のイベントハンドラをバインドして bind

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

これは、以下に相当する、よりクリーンなものです。

var myFunc = function() {
    $(this).addClass('focus');
};
$('#myDiv')
    .mouseover(myFunc)
    .focus(myFunc)
;

20
+1複数のイベントをバインドすることは私にとってニュースであり、おそらく非常に便利です。
cletus 2009

7

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


1

bindの[data]パラメータがあり、バインド時に1回だけ発生します。

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


1

.click()の方がはるかに論理的であることがわかりますが、それはあなたが物事をどう思うかだと思います。

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

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


0

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

両方の方法を試しても同じ結果になるので、同等です。


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.