2016-09-28 2 views
1

Итак, я пытаюсь выяснить способ удаления динамически созданных элементов в моей программе. В настоящее время я могу добавить шаблон выше или ниже текущего.Как удалить динамически созданные элементы в javascript/jquery?

То, что я пытаюсь сделать, заключается в том, чтобы добавить кнопку удаления прямо рядом с двумя рядами квадратов, а затем, как только пользователь нажимает на эту кнопку, конкретный шаблон удаляется, а все остальные шаблоны перемещаются в правильные позиции.

То, что я сделал до сих пор:

var id_num = 1; 
var picker = null; 
$(function() { 
$(document).on('click', ".repeat", function (e) { 
    e.preventDefault(); 
    var $self = $(this); 
    var $parent = $self.parent(); 
    if($self.hasClass("add-bottom")){ 
     $parent.after($parent.clone(true).attr("id", "repeatable" + id_num)); 
     id_num = id_num + 1; 
     //picker = null; 

    } else { 
     $parent.before($parent.clone(true).attr("id", "repeatable" + id_num)); 
     id_num = id_num + 1; 
     //picker = null; 
    } 
}); 
}); 

Любая помощь или обратная связь очень ценится!

ответ

4

Вы можете добавить кнопку удаления внутри контейнера и использовать ее для удаления. Можно легко перемещать кнопку, где хотите.

http://codepen.io/anon/pen/QKgBzP

var id_num = 1; 
var picker = null; 
$(function() { 
$(document).on('click', ".repeat", function (e) { 
    e.preventDefault(); 
    var $self = $(this); 
    var $parent = $self.parent(); 
    var newobj=$parent.clone(true).attr("id", "repeatable" + id_num); 
    if($self.hasClass("add-bottom")){ 
     $parent.after(newobj); 
     id_num = id_num + 1; 
     //picker = null; 

    } else { 
     $parent.before(newobj); 
     id_num = id_num + 1; 
     //picker = null; 
    } 
    newobj.append("<button class=\"remove\"> Remove</remove>"); 
}); 
$(document).on('click', ".remove", function (e) { 
    $(this).parent().remove(); 
}); 
}); 
+0

Знаете ли вы, как я могу сделать кнопку удаления рядом с двумя рядами квадратов? – blazerix

+0

Вам, скорее всего, придется добавлять классы в/для динамически созданного контента. Jquery сделает это проще. '$ (" yourElem ") .addClass (" newClass ");' Просто привяжите это при создании кнопки. – Illdapt

+0

@blazerix это проблема стиля, и вы должны проектировать ее, игнорируя js. Это быстрый пример: http://codepen.io/anon/pen/QKgBzP, но лучше рассмотреть html struct – Tobia

1

Вы можете посмотреть на родителя кнопки и заставить удалить:

var elem = document.getElementById("yourid"); 
    elem.parentElement.removeChild(elem); 

О создании другого repeatableX, вы бы также создать кнопку только для этого контейнера Я предполагаю.

На этой кнопке вы увидите идентификатор родителя для кнопки, в вашем случае, repeatableX, а затем скажите, чтобы удалить этот родитель, что-то похожее на приведенный выше фрагмент.

+0

. Ответ Тобиа более полный, идите с ним. – Illdapt

+0

Я знаю, что stackoverflow советует не по теме сообщения ... но спасибо за ответ! – blazerix

Смежные вопросы