2016-04-22 7 views
1

Ich mache einen AJAX-Aufruf an meinen Server, um eine Datei zu lesen und den Wert als Antwort zurück. Wenn die Anfrage erfolgreich war, ersetze ich innerHTML von meinem <p> Element mit der ID output durch den Antwortwert. Jetzt versuche ich jedes Mal einen Alarm auszulösen, wenn sich der Wert geändert hat. Ich habe versucht, ein Ereignis zu meinem <p> Element hinzufügen, damit ich erkennen kann, wenn die Variable geändert hat und Feuer meine Funktion:Detect Variable ändern mit Jquery

<p id="output"></p> 

<script> 
    $("#output").change(function() { 
     alert("HELLO WORLD!"); 
    }); 
</script> 

Es gibt keine alert() zeigt sich.

+0

möglicherweise ein Duplikat von [Gibt es einen jQuery-DOM-Listener?] (Http://Stackoverflow.com/q/2844565/710446) – apsillers

+0

Mögliches Duplikat von [Listener für Eigenschaftenwertänderungen in einem Javascript-Objekt] (http: //stackoverflow.com/questions/1063813/listener-for-property-value-changes-in-a-javascript-object) –

Antwort

3

Wenn Sie den Text/HTML-Wert eines Elements ändern, wird kein Ereignis ausgelöst. Sie müssten einen manuell auslösen. Zum Beispiel:

// in the $.ajax success handler: 
$('#output').trigger('contentchanged'); 

// event handler 
$("#output").on('contentchanged', function() { 
    alert("HELLO WORLD!"); 
}); 

Sie könnten auch ein Mutation Observer dafür verwenden, aber beachten sie nicht in älteren Browsern, wie IE10 und niedriger unterstützt.

+0

Korrekte Lösung – Dilip

2

Gemäß der von Ihnen beschriebenen Logik wird der Inhalt nur geändert, wenn Ajax erfolgreich war. Wenn dies der Fall wäre, wäre nicht die sauberste Lösung einfach, in Ihrem Ajax-Erfolg, die Funktion auszuführen, die Sie bei Inhaltsänderungen erwarten?

+0

Dies wäre auch möglich. Vielen Dank! – Black