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


115

Bir olay işleyicisini bağlamak için jQuery kullanırken, tıklama yöntemini kullanmak arasında herhangi bir fark var mı

$().click(fn)

bağlama yöntemini kullanmaya kıyasla

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

Bind'in isteğe bağlı veri parametresi dışında.


Görünüşe göre tıklamanın isteğe bağlı veri parametresi de var. Nasıl çalıştığı arasında herhangi bir fark olup olmadığını bilen var mı? Kaynak: api.jquery.com/click
Nick Udell

Yanıtlar:


137

JQuery kaynağından değeri ne olursa olsun :

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 yok -

$().click(fn)

aramalar

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

6
Doğru - click()temelde kısaltmadır bind('click')(ya da bu gün bir çağ, aslında çağırır on('click'). Benim gördüğüm şekilde, on('click')doğrudan kullanarak o ekstra işlev çağrısını kurtarabilirsin .
Nix

Aynı şeyi yapıyorlar ama bind () diyelim ki, kullanım üzerine gelip tıkladığında vb. Bir şey olmasını istiyorum . Örnek için aşağıdaki stackoverflow.com/a/519455/292408 bölümüne bakın . Elbette sadece bir olaya bağlanabilirsiniz, örneğin 'tıklama' da.
Elijah Lynn

98

Matthew'un cevabı için +1, ancak tek seferde kullanarak birden fazla olay işleyicisini de bağlayabileceğinizi söylemem gerektiğini düşündüm. bind

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

aşağıdakilere eşdeğer çok daha temiz olanıdır:

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

20
+1 Bu birden fazla olayı bağlamak benim için haber ve muhtemelen oldukça faydalı.
cletus

7

Sahip olduğunuz ikinci formu kullanarak özel olayları bağlayabilmeniz arasında bir fark vardır. Aksi takdirde, eşanlamlı görünüyorlar. Bkz: jQuery Olay Belgeleri


1

Yalnızca bağlama zamanında, bir kez gerçekleşecek olan bağlama [data] parametresi vardır.

Bağlamanın ilk parametresi olarak özel etkinlikleri de belirtebilirsiniz.


1

.Click () 'i çok daha mantıklı buluyorum, ama sanırım şeyler hakkında nasıl düşündüğünüz bu.

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

Olabildiğin kadar basit görünüyor.


0

Google Chrome'unuz varsa, geliştirici araçlarının bir olay dinleyici aracı varsa, olayını gözetlemek istediğiniz öğeyi seçin.

Her iki yolu denemenin aynı sonuca götürdüğünü göreceksiniz, bu yüzden eşdeğerdirler.


0

Tercihim () .bind çünkü onun arayüzü tutarlılık .live () . Yalnızca kodu daha okunaklı hale getirmekle kalmaz, aynı zamanda bir kod satırını diğerinin yerine bir yöntemi kullanacak şekilde değiştirmeyi kolaylaştırır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.