将元素动态添加到页面,然后将其删除
我设置了一个jQuery控件,该控件将包含文本框的表动态地添加到页面中。将元素动态添加到页面,然后将其删除
添加部分工作正常,但无论我在表中单击的位置触发了删除功能......我只是希望当我单击删除按钮时删除表。
有没有更好的方法来设置它?
感谢
var linkCounter = 1;
$("#btnAddLink").click(function() {
if (linkCounter > 10) {
alert("Only 10 learning objectives allowed per page.");
return false;
}
var newTextBoxDiv = $(document.createElement('div')).attr("id", 'link' + linkCounter);
newTextBoxDiv.after().html(
'<table>' +
'<tr><td>' +
'<label>URL: </label>' +
'</td><td>' +
'<input type="text" name="tbLinkUrl" style="width: 300px;"' +
'" id="tbLinkUrl' + counter + '" value="" >' +
'</td></tr><tr><td>' +
'<label>Label: </label>' +
'</td><td>' +
'<input type="text" name="tbLinkLabel" style="width: 300px;"' +
'" id="tbLinkLabel' + counter + '" value="" >' +
'</td></tr></table>');
newTextBoxDiv.Append.Html(
' <input type="button" value="Remove" class="removeLink">').click(function() {
$(this).remove();
linkCounter--;
});
newTextBoxDiv.appendTo("#linksGroup");
linkCounter++;
});
我已经动了你的删除点击事件addLink事件绑定之外的结合。它现在从身体委派。在下面的例子中,事件被委托给类“removeLink”的所有元素。点击按钮删除它的父母。
我做了一些小的修改,使其能够作为演示工作。最重要的部分是底部的代表(使用)。
HTML:
<input id="btnAddLink" value="Click!" type="button" />
的Javascript:
var linkCounter = 1;
$("#btnAddLink").click(function() {
if (linkCounter > 10) {
alert("Only 10 learning objectives allowed per page.");
return false;
}
var newTextBoxDiv = $("<div>").attr("id", 'link' + linkCounter);
$(this).after(newTextBoxDiv);
newTextBoxDiv.html(
'<table>' +
'<tr><td>' +
'<label>URL: </label>' +
'</td><td>' +
'<input type="text" name="tbLinkUrl" style="width: 300px;"' +
'" id="tbLinkUrl' + linkCounter + '" value="" >' +
'</td></tr><tr><td>' +
'<label>Label: </label>' +
'</td><td>' +
'<input type="text" name="tbLinkLabel" style="width: 300px;"' +
'" id="tbLinkLabel' + linkCounter + '" value="" >' +
'</td></tr></table>');
newTextBoxDiv.append(' <input type="button" value="Remove" class="removeLink">');
newTextBoxDiv.appendTo("#linksGroup");
linkCounter++;
});
$('body').on('click','.removeLink',function(){
$(this).parent().remove();
linkCounter--;
});
尝试添加单击处理程序是这样的:
newTextBoxDiv.Append.Html(
' <input type="button" id='removebutton' value="Remove" class="removeLink">');
$('#removebutton').click(function() {
$('#mytable').remove();
linkCounter--;
});
,给你的表 'MYTABLE' 的ID。
jQuery中的每个函数调用都会返回一个jQuery对象,这就是为什么您可以将多个调用串起来的原因。但它们都是基于原有对象:
这里:
newTextBoxDiv.append.html(
' <input type="button" value="Remove" class="removeLink">').click(function() {
$(this).remove();
linkCounter--;
});
要附加类型的按钮到div的输入。但是接下来你要在新的TextBoxDiv元素上设置点击事件,,而不是这个按钮。
创建按钮,添加点击功能,然后将其追加:
$(' <input type="button" value="Remove" class="removeLink">')
.click(function() {
$(this).siblings('table').remove();
linkCounter--;
}).appendTo(newTextBoxDiv);
注意,在点击功能'this'引用按钮。所以你必须找到要移除的表格,这样你才能找到按钮的兄弟姐妹。除非你想删除整个div,在这种情况下,使用'$(this).parent'而不是'$(this).siblings('table')' – 2013-03-26 14:45:11
+1来使用委托事件。我的回答中没有这样做,因为我没有足够的练习来使用它:) – 2013-03-26 14:54:52