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


115

Quando si utilizza jQuery per collegare un gestore di eventi, c'è qualche differenza tra l'utilizzo del metodo click

$().click(fn)

rispetto all'utilizzo del metodo bind

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

Diverso dal parametro dati facoltativo di bind.


Sembra che il clic abbia anche il parametro dati facoltativo. Qualcuno sa se ci sono differenze tra come funziona? Fonte: api.jquery.com/click
Nick Udell

Risposte:


137

Per quello che vale, dalla fonte 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);
    };
});

Quindi no, non c'è differenza -

$().click(fn)

chiamate

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

6
Vero - click()è fondamentalmente una scorciatoia per bind('click')(o, in questo giorno un'epoca, in realtà chiama on('click'). Per come la vedo io, potresti anche salvarti quella chiamata di funzione extra usando on('click')direttamente.
Nix

Fanno lo stesso ma bind () diciamo, voglio che accada qualcosa quando l'uso si libra E fa clic, ecc. Vedi stackoverflow.com/a/519455/292408 di seguito per l'esempio. Ovviamente puoi collegarti solo a un evento, ad esempio anche "clic".
Elijah Lynn

98

+1 per la risposta di Matthew, ma ho pensato di dover menzionare che puoi anche associare più di un gestore di eventi in una volta usando bind

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

che è l'equivalente molto più pulito di:

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

20
+1 Il fatto che legare più eventi è una novità per me e forse molto utile.
cletus

7

C'è una differenza nel fatto che puoi associare eventi personalizzati utilizzando il secondo modulo che hai. Altrimenti, sembrano essere sinonimi. Vedi: jQuery Event Docs


1

C'è il parametro [data] di bind che si verificherà solo al momento del bind, una volta.

È inoltre possibile specificare eventi personalizzati come primo parametro di bind.


1

Trovo che .click () sia molto più logico, ma immagino che sia il modo in cui pensi alle cose.

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

Sembra essere semplicissimo quanto ti sembra.


0

Se hai Google Chrome, i loro strumenti per sviluppatori dispongono di uno strumento di ascolto degli eventi, seleziona l'elemento che desideri spiare il suo evento.

Scoprirai che provare in entrambi i modi porta allo stesso risultato, quindi sono equivalenti.


0

Preferisco .bind () per la coerenza dell'interfaccia con .live () . Non solo rende il codice più leggibile, ma semplifica la modifica di una riga di codice per utilizzare un metodo invece dell'altro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.