jQuery: $().нажмите(fn) против $().bind ('click', fn);



при использовании jQuery для подключения обработчика событий, есть ли разница между использованием метода click



$().click(fn)


по сравнению с использованием метода bind



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


кроме необязательного параметра данных bind.

592   7  

7 ответов:

для чего это стоит, от источник 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)

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

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

который является гораздо более чистым эквивалентом:

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

есть одно отличие в том, что вы можете привязать пользовательские события, используя вторую форму, которая у вас есть. В противном случае, они кажутся синонимами. Смотрите:jQuery Event Docs

существует параметр [data] bind, который будет выполняться только во время привязки, один раз.

вы также можете указать пользовательские события в качестве первого параметра привязки.

я найду .click () является более логичным, но я думаю, что это то, как вы думаете о вещах.

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

Кажется, что это так же просто, как и вы.

Если у вас есть Google Chrome, их инструменты разработчика имеют инструмент прослушивателя событий, выберите элемент, который вы хотите шпионить за его событием.

вы обнаружите, что попытка обоих способов приводит к одному и тому же результату, поэтому они эквивалентны.

предпочитаю .привязать() из-за его согласованности интерфейса с .live (). Это не только делает код более читаемым, но и облегчает изменение строки кода для использования одного метода вместо другого.

Comments

    Ничего не найдено.