code it

Martins Tech Blog

jqGrid und "unrecognized expression # tbody:first"

In einem Projekt habe ich das jQuery-Plugin jqGrid eingesetzt, um Daten tabellarisch darzustellen. Allerdings überraschte mich das jqGrid beim Versuch, die Zeilen nach einer Spalte zu sortieren damit, dass sämtliche per JavaScript hinzugefügten Zeilen wieder entfernt wurden und sich ansonsten nicht viel tat.

Ein kurzer Blick in die Konsole zeigte, dass bei der Aktion ein Fehler geworfen wurde: unrecognized expression # tbody:first irgendwo in den Tiefen von jQuery.

Dass jQuery selbst mit hoher Wahrscheinlichkeit nicht das Problem sein kann, zeigt die Erfahrung.

Problem ist folgendes: Da ich mehrere dieser Grids auf einer Seite verwende udn diese auch noch dynamisch erzeugt werden, habe ich darauf verzichtet, meinen zugrunde liegenden Table-Elementen eine Id zu verpassen. Das Plugin aber benötigt sowohl für die Tabelle selbst als auch für die Zeilen jeweils Ids. Häufig kann man im Plugin-JavaScript Aktionen wie diese hier finden:

$("#"+$.jgrid.jqID(ts.p.id)+" tbody:first")

für den Zugriff auf die Tabelle und

$("#"+$.jgrid.jqID(t.p.id)+" tbody:first tr#"+$.jgrid.jqID(sr))

für den Zugriff auf gewisse Zeilen.

Lösung ist also, sich für jede Tabelle eine nach Möglichkeit eindeutige Id auszudenken und diese dann zu setzen.