При использовании jQuery для подключения обработчика событий есть ли разница между использованием метода click
$().click(fn)
по сравнению с использованием метода привязки
$().bind('click',fn);
Кроме необязательного параметра данных привязки.
При использовании jQuery для подключения обработчика событий есть ли разница между использованием метода click
$().click(fn)
по сравнению с использованием метода привязки
$().bind('click',fn);
Кроме необязательного параметра данных привязки.
Ответы:
Для чего это стоит, из источника 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)
click()
это в основном сокращение для bind('click')
(или, в наши дни, оно действительно вызывает on('click')
. Насколько я понимаю, вы могли бы также избавить себя от этого дополнительного вызова функции, используя on('click')
напрямую.
+1 за ответ Мэтью, но я подумал, что должен упомянуть, что вы также можете связать более одного обработчика событий за один раз, используя bind
$('#myDiv').bind('mouseover focus', function() {
$(this).addClass('focus')
});
что намного чище эквивалент:
var myFunc = function() {
$(this).addClass('focus');
};
$('#myDiv')
.mouseover(myFunc)
.focus(myFunc)
;
Есть одно отличие в том, что вы можете привязать пользовательские события, используя вторую форму, которая у вас есть. В остальном они кажутся синонимами. См .: Документы событий jQuery.