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


115

Al usar jQuery para conectar un controlador de eventos, ¿hay alguna diferencia entre usar el método de clic?

$().click(fn)

versus usar el método de vinculación

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

Aparte del parámetro de datos opcional de bind.


Parece que el clic también tiene el parámetro de datos opcional. ¿Alguien sabe si hay alguna diferencia entre cómo funciona? Fuente: api.jquery.com/click
Nick Udell

Respuestas:


137

Por lo que vale, de la fuente 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);
    };
});

Entonces no, no hay diferencia -

$().click(fn)

llamadas

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

6
Verdadero: click()es básicamente una abreviatura de bind('click')(o, en este día, una época, en realidad llama on('click'). A mi modo de ver, también podría ahorrarse esa llamada de función adicional usando on('click')directamente.
Nix

Hacen lo mismo pero bind () digamos, quiero que suceda algo cuando el uso se desplaza Y hace clic, etc. Consulte stackoverflow.com/a/519455/292408 a continuación para ver el ejemplo. Por supuesto, solo puede vincularse a un evento, por ejemplo, "hacer clic" también.
Elijah Lynn

98

+1 para la respuesta de Matthew, pero pensé que debería mencionar que también puede vincular más de un controlador de eventos de una vez usando bind

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

que es el equivalente mucho más limpio a:

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

20
+1 Que la vinculación de múltiples eventos es una novedad para mí y posiblemente bastante útil.
cletus

7

Hay una diferencia en que puede vincular eventos personalizados utilizando el segundo formulario que tiene. De lo contrario, parecen ser sinónimos. Ver: jQuery Event Docs


1

Existe el parámetro [datos] de vinculación que se producirá solo en el momento de vinculación, una vez.

También puede especificar eventos personalizados como primer parámetro de enlace.


1

Creo que .click () es mucho más lógico, pero supongo que así es como piensas las cosas.

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

Parece ser tan simple como parece.


0

Si tiene Google Chrome, sus herramientas de desarrollo tienen una herramienta de escucha de eventos, seleccione el elemento que desea espiar su evento.

Descubrirá que probar las dos formas conduce al mismo resultado, por lo que son equivalentes.


0

Prefiero .bind () debido a la coherencia de su interfaz con .live () . No solo hace que el código sea más legible, sino que también facilita el cambio de una línea de código para usar un método en lugar del otro.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.