¿Cuál es el mejor método en jQuery para agregar una fila adicional a una tabla como la última fila?
¿Es esto aceptable?
$('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');
¿Existen limitaciones en lo que puede agregar a una tabla como esta (como entradas, selecciones, número de filas)?
javascript
jquery
html-table
Darryl Hein
fuente
fuente
Respuestas:
No se garantiza que el enfoque que sugiera le brinde el resultado que está buscando, ¿qué pasaría si tuviera un
tbody
por ejemplo:Terminarías con lo siguiente:
Por lo tanto, recomendaría este enfoque en su lugar:
Puede incluir cualquier cosa dentro del
after()
método siempre que sea HTML válido, incluidas varias filas según el ejemplo anterior.Actualización: Revisando esta respuesta después de la actividad reciente con esta pregunta. la falta de párpados hace un buen comentario de que siempre habrá un
tbody
en el DOM; Esto es cierto, pero solo si hay al menos una fila. Si no tiene filas, no las habrá atbody
menos que haya especificado una usted mismo.DaRKoN_ sugiere anexar a la
tbody
vez de añadir contenido después de la últimatr
. Esto evita el problema de no tener filas, pero todavía no es a prueba de balas, ya que teóricamente podría tener múltiplestbody
elementos y la fila se agregaría a cada uno de ellos.Pesando todo, no estoy seguro de que haya una única solución de una línea que tenga en cuenta cada escenario posible. Deberá asegurarse de que el código jQuery coincida con su marcado.
Creo que la solución más segura es probablemente asegurarse de que
table
siempre incluya al menos unotbody
en su marcado, incluso si no tiene filas. Sobre esta base, puede usar lo siguiente, que funcionará sin importar cuántas filas tenga (y también tenga en cuenta variostbody
elementos):fuente
$('#myTable').find('tbody:last')
lugar de$('#myTable > tbody:last')
.jQuery tiene una función incorporada para manipular elementos DOM sobre la marcha.
Puede agregar cualquier cosa a su tabla de esta manera:
La
$('<some-tag>')
cosa en jQuery es un objeto de etiqueta que puede tener variosattr
atributos que se pueden establecer y obtener, así comotext
, lo que representa el texto entre la etiqueta aquí:<tag>text</tag>
.Esta es una sangría bastante extraña, pero es más fácil para usted ver lo que está sucediendo en este ejemplo.
fuente
Así que las cosas han cambiado desde que @Luke Bennett respondió a esta pregunta. Aquí hay una actualización.
jQuery desde la versión 1.4 (?) detecta automáticamente si el elemento que está intentando insertar (utilizando cualquiera de los
append()
,prepend()
,before()
, oafter()
métodos) es una<tr>
y lo inserta en la primera<tbody>
en su mesa o lo envuelve en una nueva<tbody>
si uno no lo hace existe.Entonces sí, su código de ejemplo es aceptable y funcionará bien con jQuery 1.4+. ;)
fuente
yourString.trim()
podría remediar esto.¿Y si tuvieras una
<tbody>
y una<tfoot>
?Como:
Luego insertaría su nueva fila en el pie de página, no en el cuerpo.
Por lo tanto, la mejor solución es incluir una
<tbody>
etiqueta y usar.append
, en lugar de.after
.fuente
Sé que has pedido un método jQuery. Miré mucho y descubrí que podemos hacerlo de una mejor manera que usando JavaScript directamente mediante la siguiente función.
index
es un número entero que especifica la posición de la fila para insertar (comienza en 0). El valor de -1 también se puede usar; lo que da como resultado que la nueva fila se inserte en la última posición.Este parámetro es obligatorio en Firefox y Opera , pero es opcional en Internet Explorer, Chrome y Safari .
Si se omite este parámetro,
insertRow()
inserta una nueva fila en la última posición en Internet Explorer y en la primera posición en Chrome y Safari.Funcionará para cada estructura aceptable de la tabla HTML.
El siguiente ejemplo insertará una fila en último lugar (-1 se usa como índice):
Espero que ayude.
fuente
yo recomiendo
Opuesto a
Las palabras clave
first
ylast
funcionan en la primera o la última etiqueta que se inicia, no se cierra. Por lo tanto, esto funciona mejor con las tablas anidadas, si no desea que se cambie la tabla anidada, sino que se agrega a la tabla general. Al menos, esto es lo que encontré.fuente
En mi opinión, la forma más rápida y clara es
aquí está la demostración de Fiddle
También puedo recomendar una pequeña función para hacer más cambios html
Si usa mi compositor de cadenas, puede hacer esto como
Aquí está la demostración de Fiddle
fuente
tbody
, puede obtener múltiples inserciones$("SELECTOR").last()
de limitar su colección de etiquetaEsto se puede hacer fácilmente usando la función "last ()" de jQuery.
fuente
Lo uso de esta manera cuando no hay ninguna fila en la tabla, y cada fila es bastante complicada.
style.css:
xxx.html
fuente
Para la mejor solución publicada aquí, si hay una tabla anidada en la última fila, la nueva fila se agregará a la tabla anidada en lugar de a la tabla principal. Una solución rápida (considerando tablas con / sin tbody y tablas con tablas anidadas):
Ejemplo de uso:
fuente
Lo resolví de esta manera.
Usando jquery
Retazo
fuente
Estaba teniendo algunos problemas relacionados, tratando de insertar una fila de la tabla después de la fila en la que se hizo clic. Todo está bien, excepto que la llamada .after () no funciona para la última fila.
Aterricé con una solución muy desordenada:
cree la tabla de la siguiente manera (id para cada fila):
etc ...
y entonces :
fuente
Puede utilizar esta gran función de agregar tablas de jQuery . Funciona muy bien con tablas que tienen
<tbody>
y que no. También toma en consideración el colspan de su última fila de la tabla.Aquí hay un ejemplo de uso:
fuente
Mi solución:
uso:
fuente
tbody
en la mesa .. ?? significa que puede haber una fila directamente dentro del<table>
elemento, incluso sin encabezado.fuente
La respuesta de Neil es, con mucho, la mejor. Sin embargo, las cosas se complican muy rápido. Mi sugerencia sería usar variables para almacenar elementos y agregarlos a la jerarquía DOM.
HTML
JAVASCRIPT
fuente
Escribir con una función javascript
fuente
Este complemento AddRow me pareció bastante útil para administrar filas de tablas. Sin embargo, la solución de Luke sería la mejor opción si solo necesita agregar una nueva fila.
fuente
Aquí hay un código de pirateo hacketi. Quería mantener una plantilla de fila en una página HTML . Las filas de tabla 0 ... n se representan en el momento de la solicitud, y este ejemplo tiene una fila codificada y una fila de plantilla simplificada. La tabla de plantillas está oculta y la etiqueta de la fila debe estar dentro de una tabla válida o los navegadores pueden soltarla del árbol DOM . Agregar una fila utiliza el contador + 1 identificador, y el valor actual se mantiene en el atributo de datos. Garantiza que cada fila obtenga parámetros de URL únicos .
He realizado pruebas en Internet Explorer 8, Internet Explorer 9, Firefox, Chrome, Opera, Nokia Lumia 800 , Nokia C7 (con Symbian 3), acciones de Android y navegadores beta de Firefox.
PD: doy todos los créditos al equipo jQuery; Se lo merecen todo. Programación de JavaScript sin jQuery: ni siquiera quiero pensar en esa pesadilla.
fuente
fuente
Supongo que lo he hecho en mi proyecto, aquí está:
html
js
fuente
Esta es mi solucion
fuente
si tiene otra variable a la que puede acceder en una
<td>
etiqueta como esa, intente.De esta manera espero que sea útil
fuente
Como también tengo una forma de agregar fila por fin o en cualquier lugar específico, creo que también debería compartir esto:
Primero descubra la longitud o las filas:
y luego use el siguiente código para agregar su fila:
fuente
Para agregar un buen ejemplo sobre el tema, aquí hay una solución de trabajo si necesita agregar una fila en una posición específica.
La fila adicional se agrega después de la 5ta fila, o al final de la tabla si hay menos de 5 filas.
Puse el contenido en un contenedor listo (oculto) debajo de la tabla ... así que si usted (o el diseñador) tiene que cambiarlo, no es necesario editar el JS.
fuente
Puede almacenar en caché la variable de pie de página y reducir el acceso a DOM (Nota: puede ser mejor usar una fila falsa en lugar de pie de página).
fuente
agregará una nueva fila a la primera
TBODY
de la tabla, sin depender de ningunaTHEAD
oTFOOT
presente. (No encontré información de qué versión de jQuery.append()
está presente este comportamiento).Puedes probarlo en estos ejemplos:
En qué ejemplo
a b
se inserta la fila después1 2
, no después3 4
en el segundo ejemplo. Si la tabla estuviera vacía, jQuery creaTBODY
para una nueva fila.fuente
Si está utilizando el complemento Datatable JQuery, puede intentarlo.
Refer Datatables fnAddData Datatables API
fuente
De una manera simple:
fuente
Prueba esto: forma muy simple
fuente