Soy bastante competente con la codificación, pero de vez en cuando me encuentro con un código que parece hacer básicamente lo mismo. Mi pregunta principal aquí es, ¿por qué usarías en .append()
lugar de .after()
versos o viceversa?
He estado buscando y parece que no puedo encontrar una definición clara de las diferencias entre los dos y cuándo usarlos y cuándo no.
¿Cuáles son los beneficios de uno sobre el otro y también por qué usaría uno en lugar del otro? ¿Alguien puede explicarme esto?
var txt = $('#' + id + ' span:first').html();
$('#' + id + ' a.append').live('click', function (e) {
e.preventDefault();
$('#' + id + ' .innerDiv').append(txt);
});
$('#' + id + ' a.prepend').live('click', function (e) {
e.preventDefault();
$('#' + id + ' .innerDiv').prepend(txt);
});
$('#' + id + ' a.after').live('click', function (e) {
e.preventDefault();
$('#' + id + ' .innerDiv').after(txt);
});
$('#' + id + ' a.before').live('click', function (e) {
e.preventDefault();
$('#' + id + ' .innerDiv').before(txt);
});
append
los cuales (el uso de?), es decir, errores, yo usoappendTo
que parece alsomore correcta semánticamente sobre todo porque no esafter
(cadena de cadena de la cadena) - Nota:after
no es después de dentroRespuestas:
Ver:
.append()
pone datos dentro de un elemento enlast index
y.prepend()
coloca el elemento anterior enfirst index
suponer:
cuando se
.append()
ejecute se verá así:después de la ejecución:
Violín con .append () en ejecución.
cuando se
.prepend()
ejecute se verá así:después de la ejecución:
Violín con .prepend () en ejecución.
.after()
pone el elemento después del elemento.before()
pone el elemento antes del elementousando después:
después de la ejecución:
Violín con .after () en ejecución.
usando antes:
después de la ejecución:
Juega con .before () en ejecución.
fuente
$("#viewPlaceHolder").append("/clients/RelationDropdown", {selected: selected });
.append()
no lo cargará de esa manera. Tienes que usar.load(url, params)
.Esta imagen muestra a continuación proporciona una comprensión clara y muestra la diferencia exacta entre
.append()
,.prepend()
,.after()
y.before()
Puede ver en la imagen eso
.append()
y.prepend()
agrega los nuevos elementos como elementos secundarios (color marrón) al objetivo.Y
.after()
y.before()
añade los nuevos elementos como hermanos elementos (de color negro) al objetivo.Aquí hay una DEMO para una mejor comprensión.
EDITAR: las versiones invertidas de esas funciones:
Usando este código :
en este objetivo:
Entonces, aunque estas funciones cambian el orden de los parámetros, cada una crea el mismo elemento de anidación:
... pero devuelven un elemento diferente. Esto es importante para el método de encadenamiento .
fuente
append()
&prepend()
son para insertar contenido dentro de un elemento (hacer que el contenido sea secundario) mientras queafter()
&before()
insertar contenido fuera de un elemento (hacer que el contenido sea hermano).fuente
La mejor manera es ir a la documentación.
.append()
vs.after()
append()
: Insertar contenido, especificado por el parámetro, al final de cada elemento en el conjunto de elementos coincidentes.after()
: Insertar contenido, especificado por el parámetro, después cada elemento en el conjunto de elementos coincidentes..prepend()
vs.before()
prepend()
: Insertar contenido, especificado por el parámetro, al comienzo de cada elemento en el conjunto de elementos coincidentes.before()
: Inserte contenido, especificado por el parámetro, antes de cada elemento en el conjunto de elementos coincidentes.Entonces, anexar y anteponer se refiere al hijo del objeto, mientras que después y antes se refiere al hermano del objeto.
fuente
Hay una diferencia básica entre
.append()
y.after()
y.prepend()
y.before()
..append()
agrega el elemento de parámetro dentro de la etiqueta del elemento selector al final, mientras que.after()
agrega el elemento de parámetro después de la etiqueta del elemento .Lo contrario es para
.prepend()
y.before()
.Violín
fuente
No hay ventaja adicional para cada uno de ellos. Depende totalmente de tu escenario. El siguiente código muestra su diferencia.
fuente
fuente
Imagine el DOM (página HTML) como un árbol a la derecha. Los elementos HTML son los nodos de este árbol.
El
append()
añade un nuevo nodo a lachild
del nodo que llamó a encenderlo.El
after()
añade un nuevo nodo como un hermano o al mismo nivel o niño al padre del nodo que llamó a encenderlo.fuente
Para intentar responder a su pregunta principal :
¿por qué usarías .append () en lugar de .after () o viceversa?
Cuando está manipulando el DOM con jquery, los métodos que usa dependen del resultado que desea y un uso frecuente es reemplazar el contenido.
Al reemplazar el contenido, desea
.remove()
el contenido y reemplazarlo con contenido nuevo. Si.remove()
usa la etiqueta existente y luego intenta usarla.append()
, no funcionará porque la etiqueta misma se ha eliminado, mientras que si la usa.after()
, el nuevo contenido se agrega 'fuera' de la etiqueta (ahora eliminada) y no se ve afectado por el anterior..remove()
.fuente