У меня есть следующий код
<b class="xyzxterms" style="cursor: default; ">bryant keil bio</b>
Как мне заменить b
тег на h1
тег, но сохранить все остальные атрибуты и информацию?
javascript
jquery
баммаб
источник
источник
Ответы:
Вот один из способов сделать это с помощью jQuery:
Пример: http://jsfiddle.net/yapHk/
Обновите , вот плагин:
Пример: http://jsfiddle.net/mmNNJ/
источник
children
не сработало, но сработалоcontents
..each
блок, как показано в ответе ниже.Не уверен насчет jQuery. С помощью простого JavaScript вы могли:
ДЕМО
Не уверен, насколько это совместимо с разными браузерами.
Вариантом может быть:
Для получения дополнительной информации см.
Node.attributes
[MDN] .источник
while(child = child.nextSibling)
не удалось. Спасибо!@jakov и @Andrew Whitaker
Вот еще одно улучшение, позволяющее обрабатывать сразу несколько элементов.
источник
Ответ @Jazzbo вернул объект jQuery, содержащий массив объектов jQuery, которые не были связаны. Я изменил его так, чтобы он возвращал объект, более похожий на то, что вернул бы $ .each:
(Также была проведена некоторая очистка кода, чтобы он передавал jslint.)
источник
each
цикле).Единственный способ, который я могу придумать, - это скопировать все вручную: пример jsfiddle
HTML
JQuery / Javascript
источник
@ Эндрю Уитакер: Я предлагаю это изменение:
Затем вы можете делать такие вещи, как:
$('<div>blah</div>').changeElementType('pre').addClass('myclass');
источник
Мне нравится идея @AndrewWhitaker и других использовать плагин jQuery - добавить
changeElementType()
метод. Но плагин похож на черный ящик, неважно код, если он мал и работает нормально ... Итак, производительность требуется, и она важнее кода.«Чистый javascript» имеет лучшую производительность, чем jQuery: я думаю, что код @FelixKling имеет лучшую производительность, чем @ AndrewWhitaker и другие.
Вот код «чистого Javavascript» (и «чистого DOM»), инкапсулированный в плагин jQuery :
источник
Вот метод, который я использую для замены тегов html в jquery:
источник
С
jQuery
без итерации атрибутов:replaceElem
Ниже метод принимаетold Tag
,new Tag
аcontext
и успешно выполняет замену:Удачи...
источник
Решение Javascript
Скопируйте атрибуты старого элемента в новый элемент
Замените старый элемент новым элементом
источник
map
создает новый неиспользуемый массив, его можно заменить наforEach
.Вот моя версия. По сути, это версия @fiskhandlarn, но вместо создания нового объекта jQuery она просто перезаписывает старые элементы вновь созданными, поэтому слияние не требуется.
Демо: http://jsfiddle.net/0qa7wL1b/
источник