Событие change
не сработает при изменении элементов - оно сработает только при изменении значений элементов типа ввода . Хотя вы можете наблюдать изменения с помощью MutationObserver, было бы гораздо элегантнее запустить средство проверки абзацев после добавления абзаца (или после добавления всех абзацев, если они объединены в пакет).
Поскольку он выглядит как одиночный new <p>
добавляется к каждому сообщению сокета, вы можете сохранить промежуточное количество до <p>
s, добавленных до сих пор, и как только оно достигнет предела, запустите $("div.paragraphs > p:first-child").remove()
, чтобы удалить первый <p>
(самый старый one):
let pCount = 0;
socket.on("response", function(text) {
$("div.paragraphs").append(
'<p>' + text + '</p>'
);
pCount++;
if (pCount > 10) {
$("div.paragraphs").first().remove();
}
});
Демонстрация в реальном времени (с использованием setInterval
вместо сокетов):
let pCount = 0;
setInterval(() => {
$("div.paragraphs").append(
'<p>' + Math.random() + '</p>'
);
pCount++;
if (pCount > 10) {
$("div.paragraphs > p:first-child").remove();
}
}, 400);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="paragraphs">
</div>