#jquery #append
#jquery #добавить
Вопрос:
Я создаю таблицу из объекта JSON. Первым шагом является создание заголовков столбцов таблицы:
jq_tblRow = $('<tr>') ;
obj_Report.fieldMetadata.forEach( function(elt) {
jq_tblRow.append('<th>' elt.name)
}) ;
Это дает строку с заголовками столбцов:
<tr><th>Item Type</th><th>Title</th> ... etc... </tr>
Есть ли более простой способ обернуть это с помощью тегов TABLE и THEAD? Вот к чему я пришел в итоге. Это работает, но 2 вызова «.append ()» кажутся неудобными.
jq_tblRow = $('<table>').append( $('<thead>').append(jq_tblRow) );
Я пробовал различные комбинации
.append('<table><thead>')
использование append, appendTo, prepend, before, after и т. Д. И их перестановок.
Комментарии:
1. Существуют и другие методы, которые могли бы сделать то же самое, но все это вписывается в однострочную строку… насколько проще вы ожидаете, что это станет?
2. Однако обратите внимание, что
jq_tblRow
теперь фактически вся таблица, а не строка, которую вы добавили … не уверен, для чего предназначено это назначение
Ответ №1:
Если у вас уже есть элемент jQuery, вы можете использовать wrap()
функцию, чтобы обернуть его некоторыми дополнительными тегами :
jq_tblRow = $('<tr>') ;
obj_Report.fieldMetadata.forEach( function(elt) {
jq_tblRow.append('<th>' elt.name)
});
// After you have your row in the DOM, wrap it with table/thead tags
jq_tblRow.wrap('<table><thead></thead></table>');
wrap()
Функция также может принимать функцию, если вам нужно обрабатывать более сложные операции или предпочитаемый вид объединения каждой стороны :
jq_tblRow.wrap(function(){
return '<table><thead>' this.innerHTML '/thead></table>';
});
Комментарии:
1. Работает для меня. Спасибо!