#jquery
#jquery
Вопрос:
<p><span><a href="link"></a></span></p>
Как бы я развернул все, оставив только <a href="link"></a>
?
-редактировать-
Извините, я должен был предоставить больше информации. В принципе, я пытаюсь настроить таргетинг на все a
, которые являются единственными дочерними span
элементами, которые окружены p
тегами. Я надеялся, что следующее поможет, но это только развернуло p
теги. Мне было интересно, есть ли способ удалить span
теги также.
$('p > span:only-child > a:only-child').unwrap();
Комментарии:
1. Под «unwrap» вы имеете в виду, что хотите удалить теги
p
иspan
из DOM, оставивa
там?
Ответ №1:
Это сделало бы это:
$(document).ready(function() {
var link = $("a").detach();
$("p").remove();
link.appendTo("body");
});
Отсоединяет ссылку от DOM и откладывает ее в link
var. Полностью удаляет p
из DOM. Повторно прикрепляет a
к body
тегу.
Чтобы вернуть ссылку точно туда, где она есть, добавьте ее к родительскому p
элементу, не обязательно к body
элементу. Итак, допустим, у вас есть это:
<div id="foo">
<p><span><a href="link"></a></span></p>
</div>
Вместо этого вы бы использовали эту строку:
link.appendTo("#foo");
Редактировать в ответ на вашу правку:
Да, unwrap выполняет только один родительский уровень (насколько я знаю). Так что просто сделайте это два раза. 🙂
$('p > span:only-child > a:only-child').unwrap().unwrap();
Комментарии:
1. @Steve, я бы использовал это вместо.
2. Спасибо тебе, Джефф. Просто для ясности, и поскольку я понял, насколько простым и неинформативным был мой первоначальный пост, я добавил немного больше информации, чтобы точно отразить то, что я хочу сделать. Ваш ответ все еще применим?
3. Это все равно должно применяться, если вы знаете, к какому элементу повторно прикрепить ссылку — это ключ. Сначала я не думал, что
unwrap()
это сработает, поскольку это разворачивает только один уровень, но потом я понял, что вы могли бы просто вызвать это дважды. Первый, чтобы удалитьspan
, второй, чтобы удалитьp
.
Ответ №2:
Вы не предоставили достаточно информации о других элементах на странице. Следующее просто для начала.
var theLink = $("span").html();
$("p").remove();
$("body").html(theLink);
Комментарии:
1. Спасибо вам за то, что указали на это. Я предоставил больше информации в своем первоначальном посте.