La diferencia entre la asignación de controladores de eventos con bind () y cada () en jQuery?

StackOverflow https://stackoverflow.com/questions/756547

Pregunta

Puede alguien decirme cuál es la diferencia entre la asignación de controladores de eventos usando bind ():

$(function(){
           $('someElement')
           .bind('mouseover',function(e) {
            $(this).css({
                        //change color
                        });
    })
    .bind('mouseout',function(e) {
        $(this).css({
                    //return to previous state

                 });    
    })
    .bind('click',function(e) {
        $(this).css({
                    //do smth.
                 });    
    })

}); 

y el uso de cada uno () para la misma tarea:

$('someElement').each(function(){

        $(this).mouseover(function(){$(this).css({/*change color*/})
                    .mouseout(function(){$(this).css({/*return to previous state*/});   
                    });     
                }); 
    });

gracias.

¿Fue útil?

Solución

A partir de los ejemplos que diste, yo creo que en realidad estás preguntando cuál es la diferencia, si la hay, ¿hay entre usar el método de 'bind' y luego los métodos de 'evento'.

Por ejemplo, ¿cuál es la diferencia entre:

$('.some_element').bind('click',function() { /* do stuff */ });

... y esto?

$('.some_element').click(function() { /* do stuff */ });

La respuesta es que realmente no importa. Es una cuestión de preferencia. Los métodos de evento son sintácticamente simple e implican menos escribir, pero, por lo que yo sé en realidad no hay ninguna diferencia. Yo prefiero usar los métodos de vinculación porque se puede utilizar la abreviatura caso vinculante si es necesario adjuntar más de un evento para la misma acción. También hace que sea más fácil de entender cuando / si necesita un evento 'desatar'.

Vea aquí: .bind y otros eventos

Pero, de lo que hace la pregunta real, "¿Cuál es la diferencia entre el 'cada uno' método y el método de 'bind'" ... bueno, eso es una bestia totalmente diferente.

Usted debe nunca utilizar el 'cada uno' método para unir eventos debido a que el 'bind' y los métodos de 'evento' utilizan el más más rápido motor de selector CSS (en el caso de jQuery, que utiliza el motor del chisporroteo ).

No hay casi siempre (o nunca) un caso en esto:

$('.some_element').each(function() { $(this).click(function() { /* do something */ }); });

... es mejor que esto:

$('.some_element').bind('click',function() { /* do stuff */ });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top