J’ai ce code qui ne fonctionne pas, pouvez-vous m’aider? Je veux que j’ai changé le nom de balise “p” de la classe = “s7” en “h1”
$(document).ready(function(){ $(".s7").replaceWith($('' + $(this).html() + '
'); });
Le problème est que vous faites correspondre tous les éléments avec la classe s7
, mais vous devez les traiter un par un afin de copier leur contenu dans de nouveaux éléments. Dans votre code actuel, this
s’agit toujours du document
, pas de l’élément actuel.
Vous pouvez utiliser each () pour parcourir les éléments correspondants:
$(".s7").each(function() { var $this = $(this); $this.replaceWith($("" + $this.html() + "
")); });
Ou peut-être:
$(".s7").each(function() { $("" + $(this).html() + "
").replaceAll(this); });
Vous manquez une parenthèse fermante et vous l’utilisez dans le mauvais contexte:
$(document).ready(function(){ $(".s7").replaceWith($('' + $(".s7").html() + '
')); });
Si vous avez plusieurs éléments avec un nom de classe de s7
, utilisez .each()
:
$(document).ready(function(){ $(".s7").each(function(){ $(this).replaceWith($('' + $(this).html() + '
')); }); });
La valeur de this
dans votre appel “replaceWith ()” ne sera pas l’élément “s7”; ce sera quoi que this
soit dans le plus grand gestionnaire “document.ready”.
Pour faire ce que vous voulez, utilisez “.each ()”:
$('.s7').each(function() { $(this).replaceWith($('' + $(this).html() + '
')); });
Avec cette version, jQuery appellera la fonction “each” pour chaque élément de classe “s7”. En outre, dans this
appel de fonction, jQuery fait en sorte que celui-ci fasse référence à l’un de ces éléments DOM à chaque itération.
Pour préciser davantage la différence, considérons que dans ma version et la vôtre, l’argument “replaceWith ()” est calculé avant que “.replaceWith ()” soit appelé. C’est-à-dire que l’expression de concaténation de chaîne impliquant $(this)
est évaluée avant l’appel de la fonction. Il n’ya donc aucun moyen pour que this
prenne la valeur d’un élément quelconque de la chaîne; JavaScript ne fonctionne tout simplement pas de cette façon.
Avec la boucle “.each ()”, cependant, nous pouvons nous assurer que this
a une valeur utile. Notez que “.each ()” passe également une référence à l’élément DOM actuel en tant que paramètre explicite. Le code pourrait donc ressembler à ceci:
$('.s').each(function(index, element) { $(element).replaceWith($('' + $(element).html() + '
')); });