У меня возникли проблемы с удалением некоторых элементов HTML.Устранение неполадок элементов DOM
Несколько слов о моем коде.
Я клонирую <ul>
, а затем показываю его содержимое с помощью всплывающего диалогового окна. Затем в массиве 2dim, где я сохраняю <li>
соответствующие объекты между оригиналом и клонированным. Итак, удаление из клонированного и подтверждение дает результаты в оригинале <ul>
.
Проблема, с которой я столкнулся, заключается в добавлении анимации jQuery и удалении в ее функции обратного вызова, вероятно, из-за цикла «для». Затем, когда вы удаляете дополнительно второй раз, не закрывая диалоговое окно, ошибки выходят, удаляя элементы неправильно!
Если вы не являетесь свидетелем этого с первого раза, попробуйте сыграть немного больше, это будет недолго , пока вы его не увидите!
Вот разница работает без .hide анимации: http://jsfiddle.net/TTGr7/1/
багги с анимацией: http://jsfiddle.net/TTGr7/2/
ключевой частью, а разница в той части коды:
del.click(function() {
var len = markedForDel.b.length;
if (len > 0) {
var confirmation = confirm('Delete marked groups');
if (confirmation) {
for (var i = 0; i < len; i++) {
markedForDel.a[i].remove();
markedForDel.b[i].remove();
//markedForDel.a.splice(i,1);
//markedForDel.b.splice(i,1);
}
}
}
});
и
del.click(function() {
var len = markedForDel.b.length;
if (len > 0) {
var confirmation = confirm('Delete marked groups');
if (confirmation) {
for (var i = 0; i < len; i++) {
markedForDel.a[i].hide(function(){
markedForDel.a[i].remove();
});
markedForDel.b[i].remove();
//markedForDel.a.splice(i,1);
//markedForDel.b.splice(i,1);
}
}
}
});
Так что мне действительно нужно сохранить анимацию .hide и по-прежнему удалять группы должным образом.
Так что я действительно рассчитываю на вашу любезную помощь, BR
Я не изучил код, но, возможно, вместо 'for (var i = 0; i = 0; i- -) ', так как вы удаляете элементы по ходу. –
Blazemonger
вы могли бы полностью удалить цикл for в зависимости от того, как вы строите свои массивы. –
@ Ответ dgvid верен ниже. Я также хотел бы отметить, что, поскольку вы очищаете весь список, вам не нужно делать сплайсинг для удаления ячеек. В конце функции задайте 'отмеченный_DDD.b = []; markForDel.a = []; '. –