jQuery: $ (). click (fn) vs. $ (). bind ('click', fn);


115

Під час використання jQuery для пошуку обробника подій, чи є різниця між використанням методу клацання

$().click(fn)

порівняно з використанням методу зв'язування

$().bind('click',fn);

Інший, ніж необов'язковий параметр даних bind.


Схоже, що для клацання також є необов'язковий параметр даних. Хтось знає, чи є різниці між тим, як це працює? Джерело: api.jquery.com/click
Нік Уделл

Відповіді:


137

Для чого це варто з джерела 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)

6
Правда - click()це в основному стенограма для bind('click')(або в цей день вік, він насправді дзвонить on('click'). То, як я це бачу, ви можете також зберегти собі цей додатковий виклик функції, використовуючи on('click')безпосередньо.
Nix

Вони роблять те ж саме, але bind () скажімо, я хочу, щоб щось сталося, коли вказівник клацає та клацає тощо. Для прикладу див. Stackoverflow.com/a/519455/292408 нижче. Звичайно, ви можете прив’язати лише до однієї події, наприклад, також "натиснути".
Ілля Лінн

98

+1 за відповідь Метью, але я подумав, що слід зазначити, що ви також можете зв’язати більше одного обробника подій за один раз за допомогою bind

$('#myDiv').bind('mouseover focus', function() {
    $(this).addClass('focus')
});

що набагато чистіше еквівалентно:

var myFunc = function() {
    $(this).addClass('focus');
};
$('#myDiv')
    .mouseover(myFunc)
    .focus(myFunc)
;

20
+1 Це прив'язка декількох подій для мене новина і, можливо, дуже корисна.
клент

7

Є одна відмінність у тому, що ви можете пов’язати власні події, використовуючи другу форму, яку ви маєте. Інакше вони здаються синонімами. Див.: Документи подій jQuery


1

Існує параметр [data] прив'язки, який відбуватиметься лише в час прив’язки, один раз.

Ви також можете вказати спеціальні події як перший параметр прив'язки.


1

Я вважаю, що .click () є більш логічним, але я думаю, що ви так ставитесь до речей.

$('#my_button').click(function() { alert('BOOM!'); });

Здається, це приблизно так само просто, як і ви.


0

Якщо у вас є Google Chrome, у їхніх інструментах для розробників є інструмент прослуховування подій, виберіть елемент, який ви хочете шпигувати за його подією.

Ви побачите, що спроба обох способів призводить до одного результату, тому вони є рівнозначними.


0

Я вважаю за краще .bind () через сумісність інтерфейсу з .live () . Це не тільки робить код більш читабельним, але і полегшує зміну рядка коду для використання одного методу замість іншого.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.