Próbuję przekonwertować zwykły stary tabel HTML na jqGrid. Stara tabela zawiera kolumnę zawierającą tagi, które są konstruowane przy użyciu nieuporządkowanej listy i elementów listy.jqGrid - Wstaw niestandardowy kod HTML do komórki
Here is an example (jsfiddle) z tabeli przed i jqGrid po.
W tym przykładzie używam custom formatter, który używa jQuery Templates do skonstruowania elementów DOM, a następnie formater zwraca $ .html() z wynikowych elementów DOM.
function getTagCellContents(cellvalue) {
var domitems=$("#jqgrid-tag-list-item").tmpl({tags: callvalue});
return domitems.html();
}
Problem z tym, że białe spacje zawarte w wynikowym html powodują, że wiersze są zbyt wysokie. Powoduje to również niezręczne atrybuty "Tytuł" na komórkach.
Czy jqGrid udostępnia interfejs API do wstawiania obiektów DOM bezpośrednio do komórki zamiast zwracania tekstu z niestandardowego formatyzatora? Jaka jest najlepsza praktyka umieszczania spersonalizowanego html w komórce jqGrid?
Oleg, czy można dodać nową metodę do interfejsu API jqGrid, która faktycznie dodaje obiekt DOM lub jQuery do komórki? Rozumiem, że używanie HTML jest szybsze, ale czasami nie ma odpowiednika HTML dla DOM. Na przykład chcę wstawić przycisk z niestandardowym parametrem eventListener. Nie mogę wykonać przycisku '' ponieważ moje 'doSomething()' jest funkcją prywatną i nie jest dostępne przez HTML. Dzięki! –
@LeiZhao: Pamięć używana przez przeglądarkę zostanie zwiększona po ustawieniu każdego * osobnego uchwytu zdarzenia '' onclick'. 'click' obsługuje propagację zdarzeń: jeśli nie istnieje uchwyt zdarzenia na'
Oleg, dziękuję za sugestie. Jednak w wielu przypadkach wciąż muszę wstawić/uzyskać dostęp/manipulować DOMem. Zdarzenie kliknięcia było tylko przykładem. Czasami to coś więcej. Na przykład muszę wstawić natywny tag '