2010-04-18 16 views
11

Ich habe ein benutzerdefiniertes jQuery-Plugin, das ein change Ereignis an ein Formularelement bindet, in diesem Fall einige input Elemente. Das Ereignis change wird verwendet, um einigen anderen Komponenten anzuzeigen, dass eine Änderung stattgefunden hat.Mehrere Ereignisse in jQuery binden

Dies funktioniert wie es sollte.

Ich bin jedoch auf die Notwendigkeit gekommen, ein zusätzliches Ereignis change an die gleichen input Elemente zu binden - so dass zusätzliche Komponenten auf das Ereignis einwirken können. Ich möchte nicht das des Plugins ersetzen, sondern einfach eine zusätzliche Funktion ausführen.

Gibt es eine Möglichkeit, mehrere Ereignisse in jQuery zu binden, oder, was ist die beste Methode, um dies zu erreichen?

Antwort

19

Sie können mehrere Handler für dasselbe Ereignis binden. Binden Sie die zweite Änderung wie gewohnt:

​<input type="text" id="a" />​​​​​​​​​​​​​​​ 

​$("#a"​).change(function() { alert("1"); }); 
$("#a").change(function() { alert("2"); });​ 

$("#a").change(); // alerts 1, then 2 
+1

Ah Prost. Ich hatte den Eindruck, dass dies die erste Funktion ersetzen würde. –

+0

Gilt die gleiche Logik für die Verwendung von 'bind()' mit einem Objekt anstelle jeder einzelnen Funktion? Da ich mit 'bind()' nicht den gleichen Erfolg hatte. –

+0

'change' ist nur eine Kurzform für' bind', also sollte es funktionieren. Welche Probleme haben Sie mit der Verwendung von Bind? erstellt ein kleines Beispiel mit der Übergabe einer Funktionsreferenz an bind - http://jsfiddle.net/B9ggj/ – Anurag

6

Ereignisstapel in jQuery. Wenn Sie das tun:

<input type="button" value="Press me"> 

und:

$(":button").click(function() { 
    alert("click"); 
}).click(function() { 
    alert("click 2"); 
}); 

beide anspringt. Also binden Sie einfach ein anderes Ereignis an die relevanten Elemente. Es wird nicht das erste überschrieben.

Verwandte Themen