Какой лучший способ в jQuery добавить дополнительную строку в таблицу в качестве последней строки?
Это приемлемо?
$('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');
Существуют ли ограничения на то, что вы можете добавить в такую таблицу (например, входы, выборки, количество строк)?
javascript
jquery
html-table
Дэррил Хейн
источник
источник
Ответы:
Подход, который вы предлагаете, не гарантирует, что вы получите результат, который вы ищете - что, если у вас есть,
tbody
например:В итоге вы получите следующее:
Поэтому я бы рекомендовал этот подход вместо этого:
Вы можете включить в
after()
метод все, что угодно, если это допустимый HTML, включая несколько строк, как в примере выше.Обновление: Пересмотр этого ответа после недавней активности с этим вопросом. отсутствие век дает хороший комментарий, что всегда будет
tbody
в DOM; это верно, но только если есть хотя бы один ряд. Если у вас нет строк, их не будет,tbody
если вы сами не указали их.DaRKoN_ предполагает добавление к
tbody
вместо добавления содержимого после последнегоtr
. Это обходит проблему отсутствия рядов, но все же не пуленепробиваемый, поскольку теоретически вы можете иметь несколькоtbody
элементов, и строка будет добавлена к каждому из них.Взвешивая все, я не уверен, что существует единственное однострочное решение, которое учитывает каждый возможный сценарий. Вам нужно убедиться, что код jQuery соответствует вашей разметке.
Я думаю, что самое безопасное решение, вероятно, состоит в том, чтобы вы
table
всегда включали хотя бы одинtbody
элемент в разметку, даже если в нем нет строк. Исходя из этого, вы можете использовать следующее, которое будет работать с любым количеством строк (а также с учетом несколькихtbody
элементов):источник
$('#myTable').find('tbody:last')
вместо$('#myTable > tbody:last')
.В jQuery есть встроенное средство для управления элементами DOM на лету.
Вы можете добавить что-нибудь на свой стол, как это:
$('<some-tag>')
Вещь в Jquery является объектом тега , который может иметь несколькоattr
атрибутов , которые могут быть установлены и получить, а такжеtext
, что представляет собой текст между тегом здесь:<tag>text</tag>
.Это довольно странный отступ, но вам легче увидеть, что происходит в этом примере.
источник
Так что с тех пор все изменилось @Luke Bennett ответил на этот вопрос, . Вот обновление.
JQuery начиная с версии 1.4 (?) автоматически определяет , если элемент , который вы пытаетесь вкладышем ( с использованием любого из
append()
,prepend()
,before()
илиafter()
методов) является<tr>
и вставляет его в первый<tbody>
в таблице или заворачивает его в новый ,<tbody>
если один не делает существовать.Так что да, ваш пример кода приемлем и будет хорошо работать с jQuery 1.4+. ;)
источник
yourString.trim()
может исправить это.Что делать, если у вас есть
<tbody>
и<tfoot>
?Такие как:
Тогда он вставит ваш новый ряд в нижний колонтитул, а не в тело.
Следовательно, лучшим решением является включение
<tbody>
тега и использование.append
, а не.after
.источник
Я знаю, что вы попросили метод jQuery. Я много смотрел и обнаружил, что мы можем сделать это лучше, чем напрямую использовать JavaScript с помощью следующей функции.
index
является целым числом, которое указывает позицию вставляемой строки (начинается с 0). Также можно использовать значение -1; в результате чего новая строка будет вставлена в последнюю позицию.Этот параметр является обязательным в Firefox и Opera , но не является обязательным в Internet Explorer, Chrome и Safari .
Если этот параметр не указан,
insertRow()
вставляет новую строку в последнюю позицию в Internet Explorer и в первую позицию в Chrome и Safari.Это будет работать для любой приемлемой структуры таблицы HTML.
В следующем примере будет вставлена строка last (-1 используется как индекс):
Я надеюсь, что это помогает.
источник
я рекомендую
в отличие от
first
Иlast
ключевые слова работа на первой или последней тег должен быть запущен, не закрыт. Следовательно, это лучше подходит для вложенных таблиц, если вы не хотите, чтобы измененная таблица изменялась, а вместо этого добавляете ее в общую таблицу. По крайней мере, это то, что я нашел.источник
На мой взгляд, самый быстрый и понятный способ
вот демо фиддл
Также я могу порекомендовать небольшую функцию, чтобы сделать больше изменений HTML
Если вы используете мой струнный композитор, вы можете сделать это как
Вот демо Фиддл
источник
tbody
вы можете получить несколько вставок$("SELECTOR").last()
ограничить свою коллекцию теговЭто можно легко сделать с помощью функции «last ()» в jQuery.
источник
Я использую этот способ, когда в таблице нет ни одной строки, и каждая строка довольно сложна.
style.css:
xxx.html
источник
Для лучшего решения, размещенного здесь, если в последней строке есть вложенная таблица, новая строка будет добавлена во вложенную таблицу вместо основной таблицы. Быстрое решение (с учетом таблиц с / без tbody и таблиц с вложенными таблицами):
Пример использования:
источник
Я решил это таким образом.
Использование jquery
отрывок
источник
У меня были некоторые связанные проблемы, пытаясь вставить строку таблицы после строки, по которой щелкнули. Все хорошо, за исключением того, что вызов .after () не работает для последней строки.
Я приземлился с очень неопрятным решением:
создайте таблицу следующим образом (идентификатор для каждой строки):
так далее ...
а потом :
источник
Вы можете использовать эту замечательную функцию строки таблицы jQuery . Отлично работает с таблицами, которые имеют
<tbody>
а которые нет. Также он принимает во внимание colspan вашей последней строки таблицы.Вот пример использования:
источник
Мое решение:
Применение:
источник
tbody
в таблице .. ?? означает, что может быть строка непосредственно внутри<table>
элемента, даже если без заголовка.источник
Ответ Нила безусловно, самый лучший. Однако все становится очень быстро. Я предлагаю использовать переменные для хранения элементов и добавления их в иерархию DOM.
HTML
JAVASCRIPT
источник
Написать с помощью функции JavaScript
источник
Я нашел этот плагин AddRow весьма полезным для управления строками таблицы. Тем не менее, решение Люка подойдет лучше всего, если вам просто нужно добавить новую строку.
источник
Вот некоторый хакетский хак код. Я хотел сохранить шаблон строки на странице HTML . Строки таблицы 0 ... n отображаются во время запроса, и в этом примере есть одна жестко закодированная строка и упрощенная строка шаблона. Таблица шаблонов скрыта, и тег строки должен находиться в допустимой таблице, иначе браузеры могут удалить его из дерева DOM . При добавлении строки используется идентификатор счетчика + 1, а текущее значение сохраняется в атрибуте данных. Это гарантирует, что каждая строка получает уникальные параметры URL .
Я проводил тесты в Internet Explorer 8, Internet Explorer 9, Firefox, Chrome, Opera, Nokia Lumia 800 , Nokia C7 (с Symbian 3), Android и бета-версиях Firefox.
PS: я отдаю все кредиты команде jQuery; они заслуживают всего. Программирование на JavaScript без jQuery - я даже не хочу думать об этом кошмаре.
источник
источник
Я думаю, что я сделал в моем проекте, вот оно:
HTML
JS
источник
Это мое решение
источник
если у вас есть другая переменная, вы можете получить доступ к
<td>
тегу, как это попробовать.Таким образом, я надеюсь, что это будет полезно
источник
Поскольку у меня также есть способ добавить строку, наконец, или любое другое конкретное место, поэтому я думаю, что я должен поделиться этим:
Сначала узнайте длину или строки:
и затем используйте код ниже, чтобы добавить вашу строку:
источник
Чтобы добавить хороший пример по теме, вот рабочее решение, если вам нужно добавить строку в определенной позиции.
Дополнительная строка добавляется после 5-й строки или в конце таблицы, если строк меньше 5.
Я поместил содержимое в готовый (скрытый) контейнер под таблицей ... поэтому, если вам (или дизайнеру) придется изменить его, не требуется редактировать JS.
источник
Вы можете кэшировать переменную нижнего колонтитула и уменьшить доступ к DOM (Примечание: может быть, будет лучше использовать поддельную строку вместо нижнего колонтитула).
источник
добавит новую строку в первую
TBODY
таблицу, вне зависимости от того, присутствуетTHEAD
илиTFOOT
нет. (Я не нашел информацию, из какой версии jQuery.append()
это поведение присутствует.)Вы можете попробовать это в следующих примерах:
В каком примере
a b
строка вставляется после1 2
, а не после3 4
во втором примере. Если таблица была пуста, jQuery создаетTBODY
для новой строки.источник
Если вы используете плагин Datatable JQuery, вы можете попробовать.
См. Datatables fnAddData Datatables API
источник
Простым способом:
источник
Попробуйте это: очень простой способ
источник