JQueryを使用してイベントハンドラーを接続する場合、クリックメソッドの使用に違いはありますか
$().click(fn)
バインド方法を使用する場合
$().bind('click',fn);
バインドのオプションのデータパラメータ以外。
価値があるものについては、 jQuery source から:
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)
マシューの答えは+1ですが、bind
を使用すると、一度に複数のイベントハンドラーをバインドすることもできます。
$('#myDiv').bind('mouseover focus', function() {
$(this).addClass('focus')
});
これは、次のものと同等のはるかにクリーンなものです。
var myFunc = function() {
$(this).addClass('focus');
};
$('#myDiv')
.mouseover(myFunc)
.focus(myFunc)
;
2つ目のフォームを使用してカスタムイベントをバインドできるという違いが1つあります。それ以外の場合、それらは同義語のようです。参照: jQuery Event Docs
.click()の方がはるかに論理的であると思いますが、それはあなたが物事をどのように考えているかと思います。
$('#my_button').click(function() { alert('BOOM!'); });
あなたが得るとほぼ同じくらい簡単に思えます。
Bindの[data]パラメーターがあり、これはbind-timeに1回だけ発生します。
Bindの最初のパラメーターとしてカスタムイベントを指定することもできます。
Google Chromeを使用している場合、その開発者ツールにはイベントリスナーツールがあり、そのイベントをスパイする要素を選択します。
両方の方法を試しても同じ結果が得られるため、これらは同等です。
。live()とのインターフェースの一貫性のため、。bind()を好みます。コードを読みやすくするだけでなく、コードの行を変更して、他のメソッドではなく1つのメソッドを使用しやすくします。