Ich versuche, eine einfache alte HTML-Tabelle in ein jqGrid zu konvertieren. Die alte Tabelle enthält eine Spalte mit Tags, die mit einer ungeordneten Liste und Listenelementen erstellt wurden.jqGrid - Einfügen von benutzerdefinierten HTML in Zelle
Here is an example (jsfiddle) der Tabelle vor und die jqGrid nach.
In diesem Beispiel verwende ich eine custom formatter, die jQuery Templates verwendet, um DOM-Elemente zu erstellen, und der Formatierer gibt dann die $ .html() aus den resultierenden DOM-Elementen zurück.
Das Problem, das ich dabei hatte, ist, dass Whitespace in den resultierenden HTML-Code verursacht die Zeilen zu hoch sein. Dies führt auch zu unangenehmen "Title" -Attributen auf den Zellen.
Bietet das jqGrid eine API zum direkten Einfügen von DOM-Objekten in die Zelle, anstatt Text vom benutzerdefinierten Formatierer zurückzuliefern? Was ist die beste Vorgehensweise, um angepasstes HTML in eine jqGrid-Zelle zu platzieren?
Oleg, ist es möglich, der jqGrid API eine neue Methode hinzuzufügen, die tatsächlich ein DOM- oder jQuery-Objekt an eine Zelle anfügt? Ich verstehe, dass die Verwendung von HTML schneller ist, aber manchmal gibt es kein entsprechendes HTML für ein DOM. Zum Beispiel möchte ich eine Schaltfläche mit einem benutzerdefinierten EventListener einfügen. Ich kann nicht '' weil meine 'doSomething()' ist eine private Funktion und nicht durch HTML zugänglich. Vielen Dank! –
@LeiZhao: Der Speicher, der vom Webbrowser benutzt wird, wird bei der Einstellung jedes * separaten * 'onclick' Event Handle erhöht. 'click' unterstützt Event-Bubbling: Wenn kein' '' Event-Handle auf '
Oleg, danke für deine Vorschläge. In vielen Fällen muss ich jedoch das DOM tatsächlich einfügen/darauf zugreifen/manipulieren. Das Klickereignis war nur ein Beispiel. Manchmal ist es mehr als das. Zum Beispiel muss ich ein natives '