Замена тега с сохранением содержимого

222
14 июня 2018, 01:00

Как на странице заменить все заголовки h2-h6 на тег div с сохранением всех атрибутов и у которых есть класс title?

$('h2,h3,h4,h5,h6').each(function(i,el){
    var $h = $(el);
    console.log($h);
    if($h.hasClass('title')){
        $($h).replaceWith(function(index, oldHTML){
            return $("<div />").html(oldHTML);
        });
    }
})

такой код не сохраняет атрибуты

P.S.
такое решение правильное?

$('h2,h3,h4,h5,h6').each(function(i,el){
    var $h = $(el);
    if($h.hasClass('title')){
        var div = document.createElement('div'),
            $div = $(div);
        $.each($h[0].attributes, function(i,attr){
            var a = attr.nodeName||attr.name;
            var val = attr.nodeValue;
            $div.attr(a, val);
        });
        $div.html($h.html());
        $h.replaceWith($div);
    }
})
Answer 1

$('h2,h3,h4,h5,h6').each(function(){ 
  $(this).replaceWith(function(){ 
    var $div = $('<div/>', { html: $(this).html() }); 
 
    $.each(this.attributes, function(i, attribute) { 
      $div.attr(attribute.name, attribute.value); 
    }); 
 
    return $div; 
  }); 
});
h1, h2, h3, h4, h5, h6 { background-color: red; } 
div { background-color: green; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<h1>H1</h1> 
<h2>H2</h2> 
<h3>H3</h3> 
<h4>H4</h4> 
<h5>H5</h5> 
<h6>H6</h6>

READ ALSO
Создание хвоста у частицы!

Создание хвоста у частицы!

Подскажите, как создать хвост для частиц длинной от 4 до 10 (скорее всего предыдущих состояний, но можно и просто хвост)?

236
Как перенести каждый элемент массива на новою строчку?

Как перенести каждый элемент массива на новою строчку?

Вообще это плохая идея добовлять \n к элементам массиваЛучше уж делать это при выводе

232
Функция форматирования даты

Функция форматирования даты

Изучаю js и передо мной возникла задача создать функцию форматирования даты

221
Контекст в JS (this)

Контекст в JS (this)

Правильно ли я понимаю, что в этом коде в 1-м варианте так как у стрелочных функций нету this она берет this у "родителя" , а во 2-м варианте this вообще...

215