JQuery: $(). click (fn) vs. $(). bind ('click', fn);
При использовании jQuery для подключения обработчика событий существует ли разница между использованием метода click
$().click(fn)
по сравнению с использованием метода привязки
$().bind('click',fn);
Кроме привязки необязательного параметра данных.
Ответы
Ответ 1
Для чего это стоит, из источника 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)
Ответ 2
+1 для ответа Мэтью, но я подумал, что должен упомянуть, что вы можете также привязать более одного обработчика событий за один раз, используя bind
$('#myDiv').bind('mouseover focus', function() {
$(this).addClass('focus')
});
который является намного более чистым, эквивалентным:
var myFunc = function() {
$(this).addClass('focus');
};
$('#myDiv')
.mouseover(myFunc)
.focus(myFunc)
;
Ответ 3
Есть одна разница в том, что вы можете связывать пользовательские события, используя вторую форму, которую у вас есть. В противном случае они кажутся синонимами. Смотрите: jQuery Event Docs
Ответ 4
Существует параметр [data] для связывания, который будет выполняться только во время привязки, один раз.
Вы также можете указать пользовательские события в качестве первого параметра bind.
Ответ 5
Я нахожу, что .click() более логичен, но я предполагаю, что вы думаете о вещах.
$('#my_button').click(function() { alert('BOOM!'); });
Кажется, что вы так же мертвы, как и вы.
Ответ 6
Если у вас есть Google Chrome, в их инструментах разработчика есть инструмент прослушивателя событий, выберите элемент, который вы хотите просмотреть своим "событием".
Вы обнаружите, что попытка обоих способов приводит к одному и тому же результату, поэтому они эквивалентны.
Ответ 7
Я предпочитаю .bind() из-за его согласованности интерфейса с .live(). Он не только делает код более удобочитаемым, но и упрощает изменение строки кода для использования одного метода, а не другого.