Je suis assez compétent avec le codage, mais de temps en temps je rencontre du code qui semble faire essentiellement la même chose. Ma principale question ici est, pourquoi utiliseriez-vous .append()
plutôt des .after()
versets ou vice versa?
J'ai cherché et n'arrive pas à trouver une définition claire des différences entre les deux et quand les utiliser et quand ne pas les utiliser.
Quels sont les avantages de l'un par rapport à l'autre et aussi pourquoi devrais-je utiliser l'un plutôt que l'autre ?? Quelqu'un pourrait-il me l'expliquer?
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
quels bogues (utiliser pour?) c'est-à-direappendTo
que j'utilise qui semble également plus correct sémantiquement, d'autant plus qu'il y aafter
(chaîne chaîne chaîne) - nb:after
n'est pas aprèsRéponses:
Voir:
.append()
met les données à l'intérieur d'un élément àlast index
et.prepend()
met l'elem en attente àfirst index
supposer:
lors de l'
.append()
exécution, cela ressemblera à ceci:après exécution:
Jouez avec .append () en cours d'exécution.
lors de l'
.prepend()
exécution, cela ressemblera à ceci:après exécution:
Jouez avec .prepend () en cours d'exécution.
.after()
met l'élément après l'élément.before()
met l'élément avant l'élémenten utilisant après:
après exécution:
Jouez avec .after () en cours d'exécution.
en utilisant avant:
après exécution:
Jouez avec .before () en cours d'exécution.
la source
$("#viewPlaceHolder").append("/clients/RelationDropdown", {selected: selected });
.append()
ne le chargera pas de cette façon. Vous devez utiliser.load(url, params)
.Cette image affichée ci - dessous donne une compréhension claire et montre la différence exacte entre
.append()
,.prepend()
,.after()
et.before()
Vous pouvez voir sur l'image cela
.append()
et.prepend()
ajouter les nouveaux éléments comme éléments enfants (de couleur marron) à la cible.Et
.after()
et.before()
ajoute les nouveaux éléments comme éléments frères (de couleur noire) à la cible.Voici une DÉMO pour une meilleure compréhension.
EDIT: les versions inversées de ces fonctions:
En utilisant ce code :
sur cet objectif:
Ainsi, bien que ces fonctions inversent l'ordre des paramètres, chacune crée la même imbrication d'éléments:
... mais ils renvoient un élément différent. Cela est important pour le chaînage des méthodes .
la source
append()
&prepend()
servent à insérer du contenu à l'intérieur d'un élément (faisant du contenu son enfant) tandis queafter()
&before()
insère du contenu à l'extérieur d'un élément (faisant du contenu son frère).la source
La meilleure façon est d'aller à la documentation.
.append()
contre.after()
append()
: Insérer du contenu, spécifié par le paramètre, à la fin de chaque élément dans l'ensemble des éléments correspondants.after()
: Insérer du contenu, spécifié par le paramètre, après chaque élément de l'ensemble d'éléments correspondants..prepend()
contre.before()
prepend()
: Insérer le contenu, spécifié par le paramètre, au début de chaque élément dans l'ensemble des éléments correspondants.before()
: Insérer du contenu, spécifié par le paramètre, avant chaque élément dans l'ensemble des éléments correspondants.Ainsi, append et prepend se réfèrent à l'enfant de l'objet alors qu'avant et avant se réfèrent à la fratrie de l'objet.
la source
Il existe une différence fondamentale entre
.append()
et.after()
et.prepend()
et.before()
..append()
ajoute l'élément de paramètre à l'intérieur de la balise de l'élément de sélection à la toute fin tandis que le.after()
ajoute l'élément de paramètre après la balise de l'élément .L'inverse est pour
.prepend()
et.before()
.Violon
la source
Il n'y a aucun avantage supplémentaire pour chacun d'eux. Cela dépend totalement de votre scénario. Le code ci-dessous montre leur différence.
la source
la source
Imaginez le DOM (page HTML) comme une arborescence à droite. Les éléments HTML sont les nœuds de cet arbre.
Le
append()
ajoute un nouveau nœud au nœudchild
auquel vous l'avez appelé.Le
after()
ajoute un nouveau nœud en tant que frère ou au même niveau ou enfant au parent du nœud sur lequel vous l'avez appelé.la source
Pour essayer de répondre à votre principale question :
Pourquoi utiliseriez-vous .append () plutôt que .after () ou vice versa?
Lorsque vous manipulez le DOM avec jquery, les méthodes que vous utilisez dépendent du résultat souhaité et une utilisation fréquente consiste à remplacer le contenu.
En remplaçant le contenu que vous voulez au
.remove()
contenu et remplacez-le par un nouveau contenu. Si vous.remove()
utilisez la balise existante puis essayez de l'utiliser,.append()
cela ne fonctionnera pas car la balise elle-même a été supprimée, tandis que si vous utilisez.after()
, le nouveau contenu est ajouté `` en dehors '' de la balise (maintenant supprimée) et n'est pas affecté par la précédente..remove()
.la source