В чем разница между .bind('click') и .click() в jQuery?

Что другое между двумя инструкциями ниже в jQuery:

1) с .bind

$("#username").bind('click',function(){
    //@todo
});

2) без .bind()

$("#username").click(function(){
    //@todo
});    

Итак, когда мне нужно использовать один из них?

Ответ 1

Нет никакой разницы. Если вы прочитали документы для .click, вы увидите следующую строку:

Этот метод является ярлыком для .bind('click', обработчик)

Вы можете подтвердить это, быстро взглянув на источник jQuery:

function (data, fn) {
    if (fn == null) {
        fn = data;
        data = null;
    }
    //Notice the call to bind on the following line...
    return arguments.length > 0 ? this.bind(name, data, fn) : this.trigger(name);
}

Я стараюсь использовать .click над .bind, просто потому, что быстрее писать. Тем не менее, .bind может использоваться для присоединения одного и того же прослушивателя к нескольким событиям, поэтому он полезен в этом случае:

$("#something").bind("click mouseover", function() {
    //Do stuff
});

Чтобы расширить комментарий @Tomalak, .bind также полезен при работе с настраиваемыми событиями. Для почти любого другого события существует метод быстрого доступа, как и .click. Источник jQuery выглядит следующим образом:

jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
    "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
    "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
    /*Call .bind for the respective event. There is a shortcut method 
    for each of the events listed above*/
});

Ответ 2

Нет разницы, .click является ярлыком для .bind('click',.

.click(), вызываемый без аргумента, является ярлыком для .trigger('click'.

Ответ 3

В этом виде нет разницы. Метод click является всего лишь ярлыком для bind('click', ...). Что использовать - это исключительно вопрос предпочтения/стиля

Ответ 4

Это просто ярлык. Между ними нет НИКАКОЙ разницы.

Этот метод является ярлыком для .bind('click', обработчик) в первых двух вариантах и ​​.trigger('click') в третьем.

http://api.jquery.com/click/

Ответ 5

Используя .click(), функция не запускается при касании якоря с помощью браузера Safari в iPhone с IOS 4x. Это связано со связью ('click')