J'essaie de supprimer les balises parentes d'une liste de liens qui se trouvent chacun dans un <p> et un <span>

<p>
  <span>
    <a href="#">One</a>
  </span>
</p>

<p>
  <span>
    <a href="#">Two</a>
  </span>
</p>

<a href="#">One</a>
<a href="#">Two</a>


JQuery:

 $('p').each(function () {
     $(this).html($(this).firstChild);
 });

J'ai essayé plusieurs façons de faire cela, mais je n'arrive tout simplement pas à comprendre.

1
spencer.sm 16 juil. 2015 à 22:55

2 réponses

Meilleure réponse

En supposant que les balises a seront toujours à l'intérieur d'une seule balise span et d'une seule balise p, vous pouvez appeler $("a").unwrap().unwrap(); Pour en savoir plus sur .unwrap() cliquez ici. J'ai inclus un exemple de travail ci-dessous.

$("a").unwrap().unwrap();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
  <span>
    <a href="#">One</a>
  </span>
</p>

<p>
  <span>
    <a href="#">Two</a>
  </span>
</p>
2
coderfin 16 juil. 2015 à 19:59

Si vous ne connaissez pas la structure HTML exacte des éléments a par rapport à leur parent p, vous pouvez extraire les éléments a puis remove() les {{X4 }} complètement:

$('p').each(function() {
    $(this).find('a').insertBefore(this);
    $(this).remove();    
});

Exemple de violon

Cela a l'avantage de fonctionner pour n'importe quel niveau d'élément a imbriqué.

0
Rory McCrossan 16 juil. 2015 à 20:21