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(). Он не только делает код более удобочитаемым, но и упрощает изменение строки кода для использования одного метода, а не другого.