2009-10-29 17 views
16

Il metodo "live" di jQuery non è in grado di gestire più eventi. Qualcuno sa di una buona soluzione alternativa per collegare più eventi a una funzione che esegue il polling di elementi attuali e futuri? Oppure sono bloccato usando metodi live duplicati per ogni gestore di eventi di cui ho bisogno?Associare più eventi al metodo jQuery "live"

Esempio - sto cercando di fare qualcosa di simile:

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

stai tentando di collegare più gestori allo stesso evento? o stai cercando di collegare un gestore per molti eventi diversi? – geowa4

+0

Sembra che voglia più eventi nello stesso gestore, come se potessi fare $ ("a"). Live (["click", "mouseover", "doubleclick"], function() {// fai cose qui }. Che non è possibile. –

+0

Sto provando a fare qualcosa come "$ ('. Myclass'). Live (" click keypress blur ", function() {..." –

risposta

14

Come di jQuery 1.4.3, è possibile associare più gestori di eventi dal vivo contemporaneamente passando una mappa di tipo di evento/coppie gestore:

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

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

Da jQuery 1.7 "a" la funzione è meglio:

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

Come di jQuery 1.4.1 .live() può accettare più, eventi separati da spazi, in modo simile alla funzionalità fornita in .bind(). Per esempio, siamo in grado di "legare in diretta" i passaggi del mouse e mouseOut eventi allo stesso tempo in questo modo:

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

In jQuery 1.7 v'è un'API che permettono di farlo facilmente ...

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

A mio parere questo metodo è completamente efficiente e la raccolta di tutte le abilità che è possibile utilizzare in caso di elemento ... .

Date un'occhiata a questa pagina .on() [ jQuery 1.7 API ]

1

Prova in questo modo:

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

// your code goes here 

}) 
Problemi correlati