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