2008-10-08 8 views
5

J'ai un peu de html comme ceci:un lien Décapage dans jQuery

<a href="#somthing" id="a1"><img src="something" /></a> 
<a href="#somthing" id="a2"><img src="something" /></a> 

je dois dépouiller les liens, donc je suis juste à gauche avec quelques balises d'image. Quel serait le moyen le plus efficace de le faire avec jQuery?

Répondre

8
$("a > img").parent() // match all <a><img></a>, select <a> parents 
    .each(function() // for each link 
    { 
     $(this).replaceWith(    // replace the <a> 
     $(this).children().remove()); // with its detached children. 
    }); 
+0

S'il y a des frères et sœurs à l'image alors ce sera les copier aussi bien. Vous pouvez utiliser $ (this) .children ("img"). Remove() à la place. – Sugendran

+0

@Sugendran: vrai. – Shog9

+0

Il n'y a pas de frères et soeurs. Mais c'est un bon point. – defrex

4

Cela devrait le faire:

$('a[id^=a]').each(function() { $(this).replaceWith($(this).html()); }); 
1

il en javascript plaine quelque chose comme:

<script type="text/javascript"> 
window.onload = function(){ 
    var l = document.getElementsByTagName("a"); 
    for(i=0, im=l.length; im>i; i++){ 
    if(l[i].firstChild.tagName == "img"){ 
     l[i].parentNode.replaceChild(l[i].firstChild,l[i]); 
    } 
    } 
} 
</script> 
+0

jQuery est utilisé aujourd'hui pour remplacer élégamment les peaces de code comme vous le proposez ici. Merci quand même! –

+0

Sérieusement, cet extrait montre l'élégance de jQuery. Ce code et le code de Shog9 sont exactement les mêmes, mais l'un est plus petit et plus facile à lire. Cependant, ce code fera parfaitement l'affaire aussi! –

+0

Élégamment - oui, il semble plutôt soigné, mais à l'intérieur jQuery c'est beaucoup plus grand, donc si vous n'avez pas d'autres raisons d'engager une énorme bibliothèque, utilisez ceci. Mais, bien sûr, defrex a demandé une chose-jQuery et ce n'est pas! -) – roenving