Я преобразовал свой старый плагин WordPress из jQuery в простой JavaScript, используя шпаргалку. Я был очень удивлен, что с первой попытки он работает прямо из коробки.
(function ($) {
$(document).ready(function ($) {
$('.comment-list > li .comment-reply').each(function () {
var reply = this;
/* collect every comment which needs a reply link */
var allchildren = $(reply).parent().children('.children').children().find(".comment-content");
$.each(allchildren, function (index, value) {
$(reply).clone().appendTo(value);
});
});
});
})(jQuery);
Стало так:
const replybtns = document.querySelectorAll(".comment-list > li .comment-reply");
for (let i = 0; i < replybtns.length; i++) {
let replybtn = replybtns[i];
let replybtncp = replybtn.cloneNode(true);
let cc = replybtn.parentElement.querySelectorAll('.children div.comment-content');
let lastcc = cc[Object.keys(cc)[Object.keys(cc).length - 1]];
lastcc.appendChild(replybtncp);
}
При этом копируются все ссылки для ответов всех вложенных комментариев уровня 1 и они добавляются к последнему комментарию.
Этот код в порядке? Неужели все так просто? Я тестировал его с Firefox и Chrome, и, похоже, он работает. Я знаю, что он добавляет ссылку на ответ только к последнему элементу. Я сделал это специально, чтобы было проще.
