我在前端有一个表格,单击按钮后会将多个文本框附加到表格中。这是我正在使用的事件:
//Add row to the table
$('#btnAdd').on('click', function () {
var $clone = $('#tblQuesAns tbody tr:last').clone();
$clone.find('input').val('')
$('#tblQuesAns tbody').append('<tr><td><input type="text" class="txtQuestionName form-control" placeholder="Input Name" /> </td> <td><input type="text" class="txtOptions form-control" placeholder="Input Value" /><span class="addOptions">(+)</span></td> <td><input type="text" class="txtAnswers form-control" class="form-control" placeholder="Input Value" /> <a href="javascript:void(0);" class="btn btn-danger remCF">Remove</a></td> </tr>');
});
上面的方法很完美,因此每次单击“添加”按钮时,它都会添加新行。“选项和答案”文本框中还有两个按钮。因此,单击它们,将在同一列中创建其他文本框。因此,要控制动态控制,请在绑定事件的位置使用以下命令:
//Add more rows for option
$('body').on('click', '.addOptions', function () {
$(this).parent().append('<div id="txtOptions"><input class="txtOptions form-control" name="" type="text" /></div><br />');
});
//Add more rows for answer
$('body').on('click', '.addAnswers', function () {
$(this).parent().append('<div id="txtAnswers"><input class="txtAnswers form-control" type="text" /></div><br />');
});
目前,上述方法也适用。问题是,说我导航到另一个链接,然后回来题库局部视图,点击加号(+)均匀地创建文本框,每次这意味着双控(如果它应该创建一个文本框选项的一个部分点击)。随附以下屏幕截图:
我试图删除或清除页面加载时的控件,但失败,并显示以下内容:
$("#txtOptions").empty();
$("#txtAnswers").empty();
有什么办法可以克服吗?
注意:网址-用户登录;用户[email protected]; 密码-123456; 导航到问题库,然后单击(+)号。再次导航到另一页面并返回同一页面。再次单击(+)号。
问题在于此代码在其中运行,$(document).ready()
因此当您回来时,它将为click事件绑定新的处理程序。最后,您将获得多个单击处理程序,每个单击处理程序将添加一行。尝试通过调用off()
方法删除现有的点击处理程序(如果有)。
//Add more rows for option
$('body').off('.addOptions').on('click', '.addOptions', function () {
$(this).parent().append('<div id="txtOptions"><input class="txtOptions form-control" name="" type="text" /></div><br />');
});
//Add more rows for answer
$('body').off('.addAnswers').on('click', '.addAnswers', function () {
$(this).parent().append('<div id="txtAnswers"><input class="txtAnswers form-control" type="text" /></div><br />');
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句