我看了很多,发现了很多类似的主题,但是在这个具体情况下,他们都没有真正回答我的问题:
我想在创建动态复选框时想要通过单击垃圾图像删除特定复选框和文本。当我想删除它时似乎无效。
HTML:
<input type="text" id="checkBoxName" />
<input type="button" value="ok" id="btnSaveCheckBox" />
Jquery的:
$(document).ready(function() {
$('#btnSaveCheckBox').click(function() {
addCheckbox($('#checkBoxName').val());
$('#checkBoxName').val("");
});
});
function addCheckbox(name) {
var container = $('#cblist');
var inputs = container.find('input');
var id = inputs.length+1;
$('<input />', { type: 'checkbox', id: 'cb'+id, value: name }).appendTo(container);
$('<label />', { 'for': 'cb'+id, text: name }).appendTo(container);
$('<img />', { "src": "/Pages/Images/trashDialog.png", "class": "removeCheckBoxDialog"}).appendTo(container);
$('.removeCheckBoxDialog').on('click', function (e) {
$("#cb :checkbox").remove();
});
$('<br/>').appendTo(container);
}
CSS:
.removeCheckBoxDialog {
margin-left:10%;
cursor:pointer;
}
答案 0 :(得分:1)
添加此
$("#cb"+id).remove();
$('label[for=cb'+id+']').hide();
$(this).nextAll('br').remove();
$(this).remove();
到您的click
功能
$('.removeCheckBoxDialog').on('click', function (e) {
$("#cb"+id).remove();
$('label[for=cb'+id+']').remove();
$(this).nextAll('br').remove();
$(this).remove();
});
答案 1 :(得分:1)
尝试以下 jQuery :
$('#cblist').on('click','.removeCheckBoxDialog', function (e) {
$('#'+$(this).prev().attr('for')).remove();
$(this).next('br').remove().prev().addBack().remove();
$(this).remove();
});
上面没有清除标签所以我编辑了一下:
$('#cblist').on('click','.removeCheckBoxDialog', function (e) {
$('#'+$(this).prev().attr('for')).remove();
$(this).next('br').remove();
$(this).prev().remove();
$(this).remove();
});
答案 2 :(得分:0)
试试这个
$("#cb"+id).remove();
$('label[for=cb'+id+']').remove();
答案 3 :(得分:0)
试试this。我做了以下事情:
var container2 = $("div:last-of-type", container);
来选择此div。 $(this).parent().remove();
来获取父级并将其删除。 我还删除了<br>
,因为div默认执行新行的工作。