2009-06-12 11 views
3

Grundsätzlich möchte ich die Funktion A an alle Eingänge binden. Etwas wie folgt aus:Ist es möglich, zwei separate Funktionen an dasselbe Ereignis zu binden?

$('input').bind('change', function() { bla bla bla }); 

Und dann später würde Ich mag etwas anderes zusätzlich wie folgt binden:

$('#inputName').bind('change', function() { do additional processing..}); 

Ist das möglich? Funktioniert es? Fehle ich die Syntax? Ist das in Ordnung, in Ordnung (was bedeutet, dass ich einen Fehler an einem anderen Ort habe, der dazu führt, dass einer von ihnen nicht bindet)?

+1

Ich bin mir nicht 100% sicher, also möchte ich nicht antworten. Ich bin mir jedoch ziemlich sicher, dass alles, was an zweiter Stelle steht, "gewinnen" wird. Wenn Sie also ' 'haben, geschieht nur die zusätzliche Verarbeitung onChange und nicht die ursprüngliche Verarbeitung. Ich persönlich bin davon genervt, weil manchmal ein Jquery-Plug-in seine Funktionalität an alle Elemente einer bestimmten Klasse bei einem bestimmten Ereignis bindet. Ich möchte dieses Ereignis auch dazu nutzen, etwas Zusätzliches zu tun, und es funktioniert nicht. – Apreche

+2

Duplizieren: http://stackoverflow.com/questions/702352/many-event-handles-to-one-event-jquery –

+0

@Apreche: jQuery unterstützt mehrere Handler, die an ein einzelnes Ereignis gebunden sind. Es steht jedoch jedem Behandler frei, die weitere Verarbeitung an irgendeinem Punkt zu stoppen, so dass Sie dort möglicherweise in Konflikte geraten. – Shog9

Antwort

0

In Ihrem Code ist eine Eingabe, und die andere EingabeName, ist das ein Tippfehler?

Gesucht, gibt es eine similar question hier.

$(document).ready(function() { 
    $("input").change(function() { 
    console.log("function1"); 
    }); 

    $("input").change(function() { 
    console.log("function2"); 
    }); 
}); 
+0

Kein Tippfehler, nur der einfachste Weg, die Differenzierung zu zeigen – Jared

0

vorausgesetzt, die oben aufgelöst wird (das heißt Sie versuchen, eine Funktion auf das gleiche Objekt zu binden), ja, können Sie mehrere Event-Handler auf die gleiche binden.

um Ihr Leben einfacher zu machen, schauen Sie auch in Namespaces (damit Sie Event-Handler für dasselbe Ereignis gruppieren können).

3

Die kurze Antwort auf Ihre Frage ist JA.

Wenn Sie zusätzliche Funktionalität an das Änderungsereignis #inputName binden möchten, sollte Ihr Codebeispiel funktionieren.

Wenn Sie möchten, um die Funktion ändern, dass das Ereignis behandelt können Sie alle Handler des Änderungsereignis entbinden, bevor Sie neue Event-Handler rebind wie so ...

$('#inputName').unbind('change'); 

aber vorsichtig sein ... w Ich probiere das aus. Ich bin mir keiner der Nebenwirkungen bewusst.

1

Warum erstellen Sie keine Funktion, die beide aufruft, und binden Sie dann diese neue Funktion an das Ereignis?

0

Es funktioniert gut beide zu binden. Etwas interessant wird es, wenn Sie versuchen, das Standardverhalten zu verhindern, indem Sie false zurückgeben. Die gebundenen Funktionen können nicht verhindern, dass auf diese Weise ausgeführt wird. Sie können jedoch verhindern, dass die Ereignishandler der übergeordneten Elemente ausgeführt werden.

Verwandte Themen