Есть блок .container в который динамически с помощью jquery добавляются div блоки нумерованные от 0 до 9. Требуется сделать удаление их но так, чтобы например при удалении element-5 был порядок не
element-4
element-6
...
а
element-4
element-5
...
jQuery(document).ready(function($) {
// Добавление динамически div
var i = 1;
$(document).on("click", ".btn-add", function() {
$(".container").append('<div class="element element-'+i+'">'+i+' <a href="#" class="btn-del element-'+i+'">Del</a></div>');
i++;
});
// Удаление div
$(this).on("click", ".btn-del", function() {
$(this).closest('.element').remove();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#" class="btn-add">Add</a>
<div class="container">
<div class="element element-0">0 <a href="#" class="btn-del element-0">Del</a></div>
</div>
Это конечно и на JS можно организовать, но думаю проще будет переделать считалку на CSS:
jQuery(document).ready(function($) {
// Добавление динамически div
var i = 0;
$(document).on("click", ".btn-add", function() {
$(".container").append('<div class="element element-'+(i+1)+'"><span class="count">'+(i+1)+'</span> <a href="#" class="btn-del element-'+(i+1)+'">Del</a></div>');
i++;
});
// Удаление div
$(this).on("click", ".btn-del", function() {
$(this).closest('.element').remove();
i--;
var element = document.querySelectorAll('.element');
var btnDel = document.querySelectorAll('.btn-del');
var count = document.querySelectorAll('.count');
for( var номер = 0; номер < element.length; номер++ ){
element[номер].className = element[номер].className.replace(/ element-\d+/g, "");
btnDel[номер].className = btnDel[номер].className.replace(/ element-\d+/g, "");
element[номер].classList.add('element-' + номер);
btnDel[номер].classList.add('element-' + номер);
count[номер].textContent = номер;
}
});
});
<a href="#" class="btn-add">Add</a>
<div class="container">
<div class="element element-0"><span class="count">0</span> <a href="#" class="btn-del element-0">Del</a></div>
</div>
add.addEventListener("click",()=>{
let key = elements.children.length,
el = document.createElement("div");
el.classList.add("element", "element-" + key);
el.dataset.key = key;
el.addEventListener("click",()=>{
let next = el,
i = Number(next.dataset.key);;
while(next = next.nextElementSibling) {
next.dataset.key = i;
next.classList.replace("element-" + (++i), "element-" + (i - 1));
}
el.parentNode.removeChild(el);
});
elements.appendChild(el);
})
#elements > div {
padding: 12px;
background-color: green;
}
#elements > div::before {
content: attr(class);
}
#elements > div:nth-child(2n) {
background-color: red;
}
<button id="add">добавить</button>
<div id="elements"></div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Изучаю деструктуризацию в JavaScriptМожно вытащить четные элементы из массива так