使用JQuery,bootstrap动态添加/删除行

时间:2017-09-22 22:45:36

标签: jquery html bootstrap-4

您好我正在使用jstl,bootstrap和jquery编写项目,测试(英语物理等)。 我需要表单来创建带有问题和答案的测试。我坚持了一下。 我动态创建问题和答案,但当我试图删除问题时。它不会删除已添加的答案。 以及如何在一个bean中打包所有内容以将其发送到服务器 - 例如> test(int time,string name,list(question(string name,boolean isMultAnswers,list(answer(string answer,boolean validity)))



jQuery('.plus').click(function(){

   jQuery('.information_json_plus_answer').before(
            '<tr>' +
            '<td><input type="text" class="col-xs-5" id="information_json_name[]" placeholder="answer"></td>' +
            '<td><input type="checkbox" class="checkbox" id="information_json_val[]"></td>' +
            '<td><span class="btn btn-danger minus pull-right">&ndash;</span></td>' +
            '</tr>');
});


jQuery('.plus-new').click(function(){
	jQuery('.information_json_new').before(
        '<tr>' +
		'<th>question</th>' +
		'<th>multanswer</th>' +
		'<th></th>' +
	'</tr>'+
	'<tr>' +
		'<td><input type="text" class="form-control" id="information_json_name[]" placeholder="Question"></td>' +
		'<td><input type="checkbox" class="checkbox" id="information_json_val[]"></td>' +
		'<td><span class="btn btn-danger minus pull-right">&ndash;</span></td>' +
    '</tr>'+
    '<tr class="information_json_plus">'+
        '<td></td>'+
        '<td></td>'+
        '<td><span class="btn btn-success plus pull-right">+</span></td>'+
    '</tr>'
    );
    
});

jQuery(document).on('click', '.minus', function(){
	jQuery( this ).closest( 'tr' ).remove(); 
    jQuery(this).closest('plus').remove();
   
});
jQuery(document).on('click', '.plus', function(){
	jQuery( this ).closest( 'tr' ).before(
        '<tr>' +
            '<td><input type="text" class="form-control" id="information_json_name[]" placeholder="answer"></td>' +
            '<td><input type="checkbox" class="checkbox" id="information_json_val[]" placeholder="chbox"></td>' +
            '<td><span class="btn btn-danger minus pull-right">&ndash;</span></td>' +
        '</tr>'
        );
});
&#13;
.information_json, .information_json * {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}
.table {
	width: 100%;
	max-width: 100%;
	margin-bottom: 20px;
	background-color: transparent;
	border-spacing: 0;
	border-collapse: collapse;
}
.pull-right {float: left;}
.form-control {
	display: block;
	width: 100%;
	height: 34px;
	padding: 6px 12px;
	font-size: 14px;
	line-height: 1.42857143;
	color: #555;
	background-color: #fff;
	background-image: none;
	border: 1px solid #ccc;
	border-radius: 4px;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
	box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
	-webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
	-o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
	transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
}
.btn {
	display: inline-block;
	padding: 6px 12px;
	margin-bottom: 0;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.42857143;
	text-align: center;
	white-space: nowrap;
	vertical-align: middle;
	-ms-touch-action: manipulation;
	touch-action: manipulation;
	cursor: pointer;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	background-image: none;
	border: 1px solid transparent;
	border-radius: 4px;
}
.btn-danger {
	color: #fff;
	background-color: #d9534f;
	border-color: #d43f3a;
}
.btn-success {
	color: #fff;
	background-color: #5cb85c;
	border-color: #4cae4c;
}
.plus-new {
    width: 100%;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table information_json">

    <tr class="information_json_new">
		<td></td>
		<td colspan="2"><span class="btn btn-success plus-new pull-right">+</span></td>
    </tr>
    
</table>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

问题是你有两个堆叠的tr,你只是告诉它删除一个(最近的)。一个简单的解决方法是使用文本框和按钮将问题和多答案html移动到tr中,或者快速而肮脏的修复将是:

尝试更改:

jQuery(document).on('click', '.minus', function(){
    jQuery( this ).closest( 'tr' ).remove(); 
    jQuery(this).closest('plus').remove();
});

对此:

jQuery(document).on('click', '.minus', function(){
            $(this).closest( 'tr' ).remove();
            $(this).closest( 'tr.question' ).remove(); 
            $(this).closest('plus').remove();
});

并添加:

class="question"

到这个tr:

jQuery('.information_json_new').before(
     '<tr>'

希望这对你有用。