Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Удаление тега из DOM (https://javascript.ru/forum/jquery/8432-udalenie-tega-iz-dom.html)

doniv 25.03.2010 15:22

Удаление тега из DOM
 
Ребята, подскажите как удалить все теги, например <strong> и </strong> в нужном мне DOM?

Shaci 25.03.2010 15:26

http://javascript.ru/tutorial/dom/mo...lenie-uzla-dom

subzey 25.03.2010 15:37

Как-то наподобие этого.
<h1>Продажа яваскрипта оптом.</h1>

<p>Наша компания занимает оптовыми <strong>поставками яваскрипта</strong> в отдаленные горные аулы.</p>
<p>Наш <strong>яваскрипт</strong> — самый <strong>качественный яваскрипт</strong> на рынке <strong>яваскрипта</strong>!</p>

<script>
var strongs = document.getElementsByTagName("strong"); /* находим все стронги */
for (var i=strongs.length - 1; i>=0; i--){ /* для каждого из них, начиная с конца */
	var strong = strongs[i];
	var acceptor = strong.parentNode;
	while(strong.childNodes.length){ /* пока дочерние элементы не кончатся */
		var child = strong.childNodes[0]; /* первый дочерний элемент */
		strong.removeChild(child); /* выдергиваем */
		acceptor.insertBefore(child, strong); /* и вставляем прямо перед стронгом */
	};
	acceptor.removeChild(strong); /* а потом прибиваем стронг */
};
</script>

SkyLight 25.03.2010 15:40

Если с помощью jQuery (раз уж топик находится тут), то можно так:
$('strong').each(function() {
	$(this).replaceWith(document.createTextNode($(this).html()));
});

Nekromancer 25.03.2010 15:44

Цитата:

Сообщение от SkyLight (Сообщение 49033)
Если с помощью jQuery (раз уж топик находится тут), то можно так:
$('strong').each(function() {
	$(this).replaceWith(document.createTextNode($(this).html()));
});

$('strong').each(function(){
 $(this).children().first().unwrap();
});

SkyLight 25.03.2010 15:47

Согласен, так лучше, тем более что чистый jQuery. А я unwrap как-то упустил из виду. Наверное потому, что пользоваться не приходилось.

subzey 25.03.2010 16:07

Тьфу! Так это ветка jQuery. :-?

Nekromancer 25.03.2010 16:10

Цитата:

Сообщение от SkyLight (Сообщение 49035)
Согласен, так лучше, тем более что чистый jQuery. А я unwrap как-то упустил из виду. Наверное потому, что пользоваться не приходилось.

Мне тоже не приходилось, просто запомнилось :)

Цитата:

Сообщение от subzey (Сообщение 49039)
Тьфу! Так это ветка jQuery. :-?

Подумаешь, хороший ответ нигде не лишний :victory:

doniv 25.03.2010 18:51

Спасибо!

$('strong').each(function(){
 $(this).children().first().unwrap();
});

А вот эта конструкция не работает.

Aetae 25.03.2010 23:11

Кстати, вопросик почти по теме: если текст большой, тегов много и разных, не будет ли быстрее взять innerHTML и его просеять регэкспом?


Часовой пояс GMT +3, время: 12:09.