MediaWiki:Common.js: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) Нет описания правки Метка: ручная отмена |
||
| Строка 456: | Строка 456: | ||
// Функция для обновления счётчиков для текущего уровня | // Функция для обновления счётчиков для текущего уровня | ||
function updateCounters(level) { | function updateCounters(level) { | ||
if (level > | if (level > lastLevel) { | ||
tocCounters.push(0); // Добавляем новый уровень | tocCounters.push(0); // Добавляем новый уровень | ||
} else if (level < | } else if (level < lastLevel) { | ||
tocCounters = tocCounters.slice(0, level); // Убираем лишние уровни | tocCounters = tocCounters.slice(0, level); // Убираем лишние уровни | ||
} | } | ||
| Строка 481: | Строка 481: | ||
var $heading = $(this); | var $heading = $(this); | ||
var tagName = $heading.closest('h1, h2, h3, h4, h5, h6').prop('tagName').toLowerCase(); | var tagName = $heading.closest('h1, h2, h3, h4, h5, h6').prop('tagName').toLowerCase(); | ||
var level = parseInt(tagName.charAt(1), 10); // Определяем уровень заголовка по тегу | |||
var level = | |||
updateCounters(level); // Обновляем счётчики для текущего уровня | updateCounters(level); // Обновляем счётчики для текущего уровня | ||
| Строка 493: | Строка 488: | ||
$heading.attr('id', sectionId); // Присваиваем уникальный id заголовку | $heading.attr('id', sectionId); // Присваиваем уникальный id заголовку | ||
// Если уровень заголовка ниже текущего, возвращаемся на уровень выше | // Извлекаем только текстовое содержимое заголовка, игнорируя вложенные элементы | ||
var headingText = $heading.text().trim(); | |||
// Проверяем, что текст заголовка не пустой | |||
if (headingText.length > 0) { | |||
// Если уровень заголовка ниже текущего, возвращаемся на уровень выше | |||
while (tocCounters.length > level) { | |||
$currentList = $currentList.parent(); // Переходим к родительскому <ul> | |||
} | |||
// Если уровень заголовка выше, создаём вложенный список <ul> | |||
if (level > lastLevel) { | |||
$currentList = createNestedList($currentList); // Создаём новый вложенный список | |||
} | |||
// Создаём элемент списка в оглавлении (TOC) с классами для вложенности | |||
var tocItem = $('<li>') | |||
.addClass('toclevel-' + (level - 1)) | |||
.append( | |||
$('<a>').attr('href', '#' + sectionId).append( | |||
$('<span>').addClass('tocnumber').text(getSectionNumber()), | |||
$('<span>').addClass('toctext').text(headingText) | |||
) | |||
); | |||
// Добавляем элемент в текущий список | |||
$currentList.append(tocItem); | |||
} | |||
}); | }); | ||
}); | }); | ||
} | } | ||