2009-10-29 13 views
16

Die Live-Methode von jQuery kann mehrere Ereignisse nicht verarbeiten. Kennt jemand eine gute Problemumgehung, um mehrere Ereignisse an eine Funktion anzuhängen, die aktuelle und zukünftige Elemente abfragt? Oder stecke ich mit doppelten Live-Methoden für jeden Event-Handler, den ich brauche?Mehrere Ereignisse an die jQuery-Live-Methode binden

Beispiel - Ich versuche, so etwas wie zu tun:

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

versuchen Sie, mehrere Handler an dasselbe Ereignis anzuhängen? Oder versuchen Sie, einen Handler für viele verschiedene Ereignisse anzuhängen? – geowa4

+0

Es klingt, als ob er mehrere Ereignisse im selben Handler haben möchte, als könnte man $ ("a") machen live (["click", "mouseover", "doubleclick"], function() {// mach Sachen hier }. Was Sie nicht können. –

+0

Ich versuche, etwas wie "$ ('. Myclass') zu machen. Live (" klicken Sie auf Tastendruck Unschärfe ", Funktion() {..." –

Antwort

14

Ab jQuery 1.4.3 können Sie mehr Live-Event-Handler gleichzeitig binden, indem eine Karte von Ereignistyp vorbei/Handler-Paare:

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

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

Von jQuery 1.7 "auf" Funktion ist besser:

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

Ab jQuery 1.4.1 .live() können mehrere, durch Leerzeichen getrennte Ereignisse akzeptieren, ähnlich der Funktionalität in .bind() zur Verfügung gestellt. Zum Beispiel können wir die Mouseover- und mouseout Ereignisse zur gleichen Zeit „live bind“ wie so:

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

In jQuery 1.7 gibt es eine API, die es Ihnen ermöglichen, es leicht zu tun ...

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

Meiner Meinung nach dieser Methode vollständig effizient ist und alle Fähigkeiten zu sammeln, die Sie im Elemente der Veranstaltung nutzen können ... .

auf diese Weise .on() [ jQuery 1.7 API ]

1

Versuchen Sie, einen Blick auf diese Seite nehmen:

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

// your code goes here 

}) 
Verwandte Themen