Найти и удалить в переменной блок
Найти и удалить в переменной $all_messages блок по data.className, data.name, data.mess
Код добавления блока в переменную:
socket.on('add mess', function(data) {
// Встраиваем полученное сообщение в блок с сообщениями
// У блока с сообщением будет тот класс, который соответвует пользователю что его отправил
$all_messages.append("<div class='alert alert-" + data.className + "'><b>" + data.name + "</b>: " + data.mess + "</div>");
});
Ответы (1 шт):
Автор решения: uGame
→ Ссылка
Можно вместо indexOf регулярку запихать, но я в них не силен)
$(() => {
let $allMessages = $('#all-messages')[0]
append({
className: 'danger',
name: 'Ошибка',
mess: 'Введите свое имя и фамилию'
})
append({
className: 'danger',
name: 'Ошибка',
mess: 'Введите сообщение'
})
append({
className: 'danger',
name: 'Ошибка',
mess: 'Сообщение слишком длинное (больше 300 символов)'
})
function append(data) {
let $div = $("<div class='alert alert-" + data.className + "'><b>" + data.name + "</b>: " + data.mess + "</div>")[0]
$allMessages.append($div)
}
remove({
className: 'danger',
name: 'Ошибка',
mess: 'Введите сообщение'
})
function remove(data) {
for (let i = 0, l = $allMessages.children.length; i < l; i++) {
it = $allMessages.children[i]
if (it.className.indexOf(data.className) !== -1 &&
it.innerText.indexOf(data.name) !== -1 &&
it.innerText.indexOf(data.mess) !== -1) {
it.remove()
return;
}
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="all-messages"></div>
