2009-10-29 13 views
16

Metoda "na żywo" jQuery nie obsługuje wielu zdarzeń. Czy ktoś wie o dobrym obejściu, aby dołączyć wiele zdarzeń do funkcji, która sonduje bieżące i przyszłe elementy? Czy utknąłem przy użyciu zduplikowanych metod live dla każdego programu obsługi zdarzenia, którego potrzebuję?Powiąż wiele zdarzeń z metodą "żywych" jQuery

Przykład - Staram się zrobić coś takiego:

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

czy próbujesz dołączyć wiele programów obsługi do tego samego zdarzenia? lub czy próbujesz dołączyć handler'a do wielu różnych wydarzeń? – geowa4

+0

Wygląda na to, że chce wielu zdarzeń w tym samym module obsługi, tak jakbyś mógł zrobić $ ("a"). Live (["kliknij", "mouseover", "doubleclick"], function() {// wykonaj tutaj } Którego nie możesz. –

+0

Próbuję zrobić coś w rodzaju "$ (" .myclass "). Live (" kliknij, rozmycie keypress ", function() {..." –

Odpowiedz

14

Jako jQuery 1.4.3, można powiązać wiele obsługi zdarzeń na żywo jednocześnie przepuszczając mapę typu zdarzenia/par handler:

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

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

Od jQuery 1.7, "on" funkcji jest lepsze:

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

Jak jQuery 1.4.1 .live() może przyjąć wiele, oddzielonych spacjami zdarzenia, podobne do funkcjonalności dostarczanej w .bind(). Na przykład, możemy „na żywo bind” na mouseover i mouseOut imprezy w tym samym czasie tak:

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

w jQuery 1.7 istnieje API, które pozwalają zrobić to łatwo ...

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

Moim zdaniem ta metoda jest całkowicie sprawna i zbierając wszystkie umiejętności, które można wykorzystać w przypadku elementu ... .

Spójrz na tej stronie .on() [ jQuery 1.7 API ]

1

Spróbuj w ten sposób:

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

// your code goes here 

})