[英]Event works only one time
我将事件侦听器设置为button,并期望每次按下按钮时都会添加新节点,但是实际上,这仅一次起作用。 那一定是我的错误:“:last”选择器在某种程度上冻结在同一节点上。 我怎样才能解决这个问题? 谢谢。
$("#btnAddWord").on('click', function(){
$('div.input-group:last').after( inputGroup );
});
这是因为您尝试一次又一次地添加相同的元素(而不是新元素)。 让我们为每次点击创建一个新的点击。
来自JSFiddle示例的修改后的代码:
$("#btnAddWord").on('click', function(){
var inputGroup = document.createElement('div');
inputGroup.setAttribute('class','input-group');
inputGroup.innerHTML = '...here your HTML...';
$('div.input-group:last').after( inputGroup );
});
您应该使用一个生成新输入组的函数,在这里,您始终指的是同一元素(仅创建一次)。
function createInputGroup() {
return $('<div class="input-group">' +
'<span class="input-group-addon">' +
' <input type="checkbox">' +
'</span>' +
'<input type="text" class="form-control" placeholder="New word">' +
'<span class="input-group-addon">' +
' <span class="glyphicon glyphicon-remove-circle"></span>' +
'</span>' +
'</div>');
}
$("#btnAddWord").on('click', function(){
$('div.input-group:last').after( createInputGroup() );
});
查看您的小提琴链接,看来下次单击时inputGroup不再可用。 所以试试这个:
function CreateDiv()
{
var inputGroup = document.createElement('div');
inputGroup.setAttribute('class','input-group');
inputGroup.innerHTML = '<span class="input-group-addon">'+
' <input type="checkbox">'+
'</span>'+
'<input type="text" class="form-control" Placeholder="New word">'+
'<span class="input-group-addon">'+
' <span class="glyphicon glyphicon-remove-circle"></span>'+
'</span>';
return inputGroup;
}
$(document).on("click", "#btnAddWord", function(){
$('div.input-group:last').after( CreateDiv() );
});
$("#btnAddWord").on('click', function(){
var inputGroup = document.createElement('div');
inputGroup.setAttribute('class','input-group');
inputGroup.innerHTML = '<span class="input-group-addon">'+
' <input type="checkbox">'+
'</span>'+
'<input type="text" class="form-control" Placeholder="New word">'+
'<span class="input-group-addon">'+
' <span class="glyphicon glyphicon-remove-circle"></span>'+
'</span>';
$('div.input-group').last().append( inputGroup );
});
您只是将同一元素从一个地方移到另一个地方(顺便说一下,这是同一地方)。
您需要通过执行以下操作来克隆此元素
$(inputGroup).clone()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.