2009-10-29 20 views
16

El método 'en vivo' de jQuery no puede manejar eventos múltiples. ¿Alguien sabe de una buena solución para adjuntar eventos múltiples a una función que sondea los elementos actuales y futuros? ¿O estoy atrapado utilizando métodos duplicados en vivo para cada controlador de eventos que necesito?Enlazar eventos múltiples con el método 'en vivo' de jQuery

Ejemplo - Estoy tratando de hacer algo como:

$('.myclass').live('change keypress blur', function(){ 
    // do stuff 
}); 
+0

¿está tratando de conectar múltiples controladores para el mismo evento? o está tratando de adjuntar un controlador para muchos eventos diferentes? – geowa4

+0

Parece que quiere múltiples eventos en el mismo controlador, como si pudieras hacer $ ("a"). Live (["click", "mouseover", "doubleclick"], function() {// hacer las cosas aquí }. Lo que no puede. –

+0

Estoy tratando de hacer algo como "$ ('. Myclass'). Live (" haga clic en desenfoque de tecla ", función() {..." –

Respuesta

14

En fecha jQuery 1.4.3, puede enlazar varios controladores de eventos en directo simultáneamente pasando un mapa de tipo de evento/pares handler:

$("a").live({ 
    click: function() { 
    // do something on click 
    }, 
    mouseover: function() { 
    // do something on mouseover 
    } 
}); 

http://api.jquery.com/live/

de jQuery 1.7 "en la" función es mejor:

$("a").on({ 
    click: function() { 
     // do something on click 
    }, 
    mouseenter: function() { 
     // do something on mouseenter 
    }, 
    mouseleave: function() { 
     // do something on mouseleave 
    } 
}); 
19

A partir de jQuery 1.4.1 .live() puede aceptar múltiples eventos, separados por espacios, de forma similar a la funcionalidad proporcionada en .bind(). Por ejemplo, podemos "se unen en vivo" los eventos mouseover y mouseout al mismo tiempo, así:

$('.hoverme').live('mouseover mouseout', function(event) { 
    if (event.type == 'mouseover') { 
    // do something on mouseover 
    } else { 
    // do something on mouseout 
    } 
}); 
7

En jQuery 1.7 existe una API que permite hacer fácilmente ...

$(".myClass").on({ 
    click: function(){ 
     alert("You click on me!"); 
    }, 
    mouseenter: function(){ 
     alert("Do you want click on me?"); 
    } 
}); 

En mi opinión, este método es completamente eficiente y reunir todas las habilidades que se pueden utilizar en el evento del elemento ... .

Tome un vistazo a esta página .on() [ jQuery 1.7 API ]

1

Trate de esta manera:

("#button").bind("click keyup", function(){ 

// your code goes here 

}) 
Cuestiones relacionadas