2009-02-06 18 views
112

, Bind isteğe bağlı veri parametresi daha

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

diğer bağlama yöntemi kullanılarak karşılık tıklama yöntemi

$().click(fn) 

kullanılarak arasında herhangi bir fark yoktur.

+0

Tıklama, isteğe bağlı veri parametresine de sahiptir. Nasıl çalıştığı arasında herhangi bir fark olup olmadığını bilen var mı? Kaynak: http://api.jquery.com/click/ –

cevap

134

bu değer ne için, jQuery source den:

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); 
    }; 
}); 

Yani hayır, hiçbir fark yoktur -

$().click(fn) 

aramalar Matthew cevap

$().bind('click',fn) 
+6

True - 'click()' bind ('click') 'için temelde shorthand'tir (ya da, bu günde bir yaş, aslında“ on ”olarak adlandırılır). '' Gördüğüm kadarıyla, '' ('click') 'yi kullanarak doğrudan fonksiyon çağrısında bulunabilirsiniz. – Nix

+0

Aynı şeyi yaparlar ama bind() diyelim diyelim ki, bir şey istiyorum kullanım, imleçler ve tıklamalar vb. olduğunda ortaya çıkar.Örneğin için http://stackoverflow.com/a/519455/292408 adresine bakın.Tabii ki sadece bir olaya bağlanabilirsiniz, örneğin 'tıkla' gibi. –

7

Özel olayları, sahip olduğunuz ikinci formu kullanarak bağlayabileceğiniz bir fark vardır. Aksi halde, eş anlamlı görünüyorlar. Bkz: jQuery Event Docs

95

+1 ama ben de birden fazla olay h bağlayabilirsiniz bahsetmeliydim bir kere, sadece bağlama zamanında meydana gelecektir bağlama [veri] parametresi vardır

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

+1 Birden fazla olayın bağlanması benim için bir haber ve muhtemelen oldukça kullanışlıdır. – cletus

+1

Evet, bilmek harika. –

1

: Andler tek seferde daha temiz eşdeğer olduğunu bind

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

kullanarak.

Ayrıca, özel olayları ilk bağlama parametresi olarak da belirleyebilirsiniz.

0

Google Chrome'unuz varsa, geliştirici araçları bir etkinlik işleyici aracına sahipse, 'etkinliğini görmek istediğiniz öğeyi seçin.

Her iki yolun da aynı sonuca yol açtığını göreceksiniz, dolayısıyla eşdeğerdirler.

0

nedeniyle .live() ile arabirim tutarlılık .bind() tercih ederim. Sadece kodu daha okunabilir hale getirmekle kalmaz, aynı zamanda bir kod satırını diğerinin yerine bir yöntem kullanmak üzere değiştirmeyi kolaylaştırır.

1

.click() yönteminin daha mantıklı olduğunu buluyorum, ancak sanırım işler hakkında nasıl düşündüğünüzü tahmin ediyorum.

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

Elde ettiğiniz kadar basit ve basit gibi görünüyor.