jquery change tag

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() + '

')); });

http://jsfiddle.net/L82PW/

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() + '

')); });