Der einzige browserübergreifende Weg, dies zu tun, wäre im Moment mit einem setInterval und möglicherweise einem benutzerdefinierten Ereignis.
setInterval(function() {
var $t = $("#myTable"),
rowCount = $t.data("rowCount"),
rowLength = $t.find("tbody").children().length;
if (rowCount && rowCount !== rowLength) {
$t.trigger("rowcountchanged").data("rowCount", rowLength);
}
else if (!rowCount) {
$t.data("rowCount", rowLength);
}
}, 50);
$("#myTable").on("rowcountchanged",function(){
alert($(this).data("rowCount"));
});
Ich würde vorschlagen, das Ereignis manuell auszulösen, wenn Sie die Anzahl der Zeilen ändern, anstatt ein Intervall zu verwenden, wenn möglich.
UPDATE:
Verwenden Sie das jqGrid refresh
Veranstaltung.
var rowCount = $("#gridid>tbody>tr").length;
jQuery("#gridid").jqGrid({
...
refresh: function(){
var currCount = $("#gridid>tbody>tr").length;
if (currCount !== rowCount) {
alert("Number of rows changed!");
rowCount = currCount;
}
},
...
});
Wenn Sie Zeilen beim Klicken manuell löschen, müssen Sie Ihren Code auch dort ausführen, es sei denn, das Raster wird auch neu geladen.
0 Stimmen
Es scheint, dass OP versucht hat, das folgende jQuery-Plugin zu verwenden: archive.plugins.jquery.com/projekt/watch (die
watch("length")
bit)0 Stimmen
Vielen Dank für Ihre Antwort. ja absolut. Aber, der obige Code funktioniert nicht. Könnten Sie meinen Fehler herausfinden?
0 Stimmen
Es gibt wirklich nicht genug Code, der falsch sein könnte. Dieses spezielle Plugin wurde 2009 hinzugefügt und scheint danach aufgegeben worden zu sein. Höchstwahrscheinlich funktioniert es einfach nicht mit modernen Versionen von jQuery.
0 Stimmen
@RajaGopal "Kannst du meinen Fehler erkennen?"
.watch
ist keine Jquery-Methode. Woher haben Sie es bekommen?