Удалите элементы onclick (включая кнопку удаления) с помощью jQuery
Я знаю, что есть некоторые вопросы, которые выглядят как мои, но в этом случае я хочу, чтобы кнопка удаления также была удалена, и я не знаю, как это сделать.
Вот мой вопрос:
Я добавляю 3 элемента с jQuery, когда нажата кнопка добавления.
Включая кнопку удаления.
Я хочу, чтобы эта кнопка удаления удаляла его и другие два элемента.
Счетчик должен делать идентичные идентификаторы, но я не уверен, правильно ли я сделал это с помощью jQuery.
Как удалить три элемента, включая кнопку удаления onclick?
$(function() {
var counter = 0;
$('a').click(function() {
$('#box').append('<input type="checkbox" id="checkbox" + (counter) + "/>');
$('#box').append('<input type="text" id="t1" + (counter) + "/>');
$('#box').append('<input type="button" value="." id="removebtn" + (counter) + "/>');
$("#box").append("<br />");
$("#box").append("<br />");
counter++;
});
$('removebtn').click(function() {
remove("checkbox");
});
});
заблаговременно
Ответы
Ответ 1
мое предложение будет таким.
$(function () {
var counter = 0;
$('a').click(function () {
var elems = '<div>'+
'<input type="checkbox" id="checkbox"' + (counter) + '" class="item"/>' +
'<input type="text" id="t1"' + (counter) + '"/>' +
'<input type="button" class="removebtn" value="." id="removebtn"' + (counter) + '"/>' +
'</div>';
$('#box').append(elems);
$("#box").append("<br />");
$("#box").append("<br />");
counter++;
});
$('.removebtn').live(function () {
$(this).parent().remove();
});
});
Ответ 2
Предположим, что ваш идентификатор кнопки удаления - # removebtn1234. Тогда
$("#removebtn1234").click(function(){
$(this).remove();
});
должен работать
Но для упрощения манипуляций с несколькими элементами я предлагаю вам изменить следующие параметры:
$('a').click(function() {
$('#box').append('<input type="checkbox" data-id="' + counter + '"/>');
$('#box').append('<input type="text" data-id="' + counter + '"/>');
$('#box').append('<input type="button" value="." class="removebtn" data-id="' + counter + '"/>');
$("#box").append("<br /><br/>");
counter++;
});
$(".removebtn").click(function(){
var id = $(this).data("id");
$("*[data-id=" + id + "]").remove();
});
Ответ 3
Здесь решение (которое кажется более грязным, чем нужно, но я не могу наложить на него свой палец).
$(function() {
var counter = 0;
$('a').click(function() {
var checkBox = $('<input type="checkbox" id="checkbox' + (counter) + '"/>'),
textBox = $('<input type="text" id="t1' + (counter) + '"/>'),
removeButton = $('<input type="button" value="." id="removebtn' + (counter) + '"/>'),
containerDiv = $("<div />");
removeButton.click(function(e) {
e.preventDefault();
containerDiv.remove();
});
containerDiv
.append(checkBox)
.append(textBox)
.append(removeButton);
counter++;
$("#box").append(containerDiv);
});
});
В этом решении я делаю переменную ссылки jQuery. Таким образом, мы можем вызывать такие вещи, как checkBox.remove()
и ссылаться только на этот флажок (не пытаясь выработать URL-адрес).
Я немного изменил его и удалил теги <br />
и завернул все в <div />
. Таким образом вы можете просто удалить контейнер div и все элементы будут идти.
Пример: http://jsfiddle.net/jonathon/YuyPB/