Änderungsereignisse werden nicht, weil das Ereignis onChange genannt zu werden, die das Ereignis, zu dem die jQuery change()
Methode des angegebenen Rückruf bindet, für nur gültig ist <input>
, <select>
und <textarea>
Elemente (reference).
Insbesondere Ihr erstes Beispiel ruft change()
auf eine Nummer, die einen Fehler werfen sollte. Ihr letzter Beispiel ruft change()
auf einem tbody
Element auf, das das Ereignis onChange
nicht unterstützt.
Soweit etwas zu bekommen, die Sie tatsächlich funktioniert setInterval()
explizit die Anzahl der Zeilen jeder so oft zu überprüfen, um zu verwenden:
setInterval(function(){
if($("#myTable tr").length > 2){
/* do stuff */
}
}, 1000);
Dies würde prüfen, ob die Anzahl der Zeilen größer als 2 pro Sekunde ist.
Wenn möglich, würde ich diesen Ansatz nicht verwenden und würde stattdessen versuchen, dieselben Aktionen auszuführen, die Sie an einem mythischen "on row change" -Ereignis an dem Punkt ausführen würden, an dem Sie tatsächlich die AJAX-Aufrufe vornehmen. Wenn überhaupt, könnten Sie einen benutzerdefinierte erstellen jQuery event auf das <table>
Element nach jedem AJAX-Aufruf gefeuert werden (zB $("#myTable tr").trigger('my-custom-event')
,), die Sie dann hören: $("#myTable tr").bind('my-custom-event', function(){ /* do stuff */ })
auf gut Glück, dass Sie keine Kontrolle oder Zugang zu das JavaScript, das die AJAX-Aufrufe auslöst, die Ihre Zeilen aktualisieren, könnte eine andere Lösung sein, um in das jQuery-Ereignis ajaxSuccess()
zu schauen, das ausgelöst wird, wenn eine AJAX-Anforderung erfolgreich auf Ihrer Seite ausgeführt wird. Zum Beispiel:
$('body').ajaxSuccess(function(){
if($("#myTable tr").length > 2){
/* do stuff */
}
});
können Sie die Funktion auf Ajax-Erfolg ausführen –
Sie wahrscheinlich besser sind weg in der Ajax-Rückruf setzen Code. Wenn es sich um eine Bibliothek mit einer API handelt, prüfen Sie, ob ein "recordAdded" -Ereignis oder etwas ähnliches vorhanden ist. – hyperslug
Danke für die Antwort, ich werde versuchen und überprüfen Sie die Ajax-Bibliothek, die ich benutze. Aber für den Fall, dass ich es mit jQuery machen möchte, gibt es eine Möglichkeit, das Ereignis rowcount change zu erfassen. – bhuvan