javascript before - как копировать содержимое, перед которым добавляем?

Подскажите, пожалуйста, как из этого:

<h2>Заголовок</h2>
<h2>Второй заголовок</h2>
<h2>Другой заголовок</h2>

Сделать это:

[tabby title="Заголовок"]<h2>Заголовок</h2>
[tabby title="Второй заголовок"]<h2>Второй заголовок</h2>
[tabby title="Другой заголовок"]<h2>Другой заголовок</h2>

То есть, не просто вставляем содержимое перед <h2>, но еще и копируем текст, который после h2 (у каждого свой) и размещаем его в [tabby title="XXXX"]. Не силён в этом, а нагуглить не получилось.


Ответы (1 шт):

Автор решения: Grundy

Метод .before может принимать функцию, которая возвращает то, что будет вставлено перед текущим элементом. При этом доступ к самому элементу можно осуществить через this.

Получить текст текущего элемента можно с помощью свойства .textContent

Таким образом код может быть следующим

$('h2').before(function() {
  return `[tabby title="${this.textContent}"]`;
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h2>Заголовок</h2>
<h2>Второй заголовок</h2>
<h2>Другой заголовок</h2>

→ Ссылка