У меня есть немного html вот так:
<a href = "#somthing" id = "a1"><img src = "something" /></a>
<a href = "#somthing" id = "a2"><img src = "something" /></a>
Мне нужно убрать ссылки, так что у меня осталась пара тегов изображений. Что было бы наиболее эффективным способом сделать это с помощью jQuery?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


$("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.
});
Братьев и сестер не бывает. Но это хороший момент.
Это должно сделать это:
$('a[id^=a]').each(function() { $(this).replaceWith($(this).html()); });
В простом javascript это будет примерно так:
<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>
jQuery сегодня используется для элегантной замены фрагментов кода, подобных вашему, предлагаемому здесь. Спасибо, в любом случае!
Серьезно, этот фрагмент просто показывает элегантность jQuery. Этот код и код Shog9 точно такие же, но один меньше по размеру и намного удобнее для чтения. Хотя и этот код отлично справится со своей задачей!
Элегантно - да, выглядит довольно аккуратно, но внутри jQuery он намного больше, поэтому, если у вас нет других причин использовать огромную библиотеку, используйте это. Но, конечно, defrex попросил jQuery-штуку, а это не так! -)
Возможно, это плохо с моей стороны, но я настолько привык к jquery (и подобным библиотекам), что даже представить себе не могу, что снова попытаюсь писать код на raw js. Я думаю, что мои пользователи справятся с накладными расходами.
Если у изображения есть братья и сестры, они также будут скопированы. Вместо этого вы можете использовать $ (this) .children ("img"). Remove ().