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.