DOM: 在 onclick 事件中用新创建的删除按钮删除新创建的 'article' 元素?
DOM: Delete newly created 'article' element with newly created delete button within onclick event?
我有一个 section 元素,其中包含一个 article 元素。另外,我有一个带有 'onclick' 事件的输入按钮。每当此事件触发时,一个新的 article 元素将附加到具有 unique id 的 section 元素。
newArticle 元素包含标签、文本框和删除按钮。所有这三个元素都在单击事件中创建。
document.getElementById("addRow").onclick = function () {
var newCustomerlbl = document.createElement("label");
newCustomerlbl.innerHTML = "Cutomer Name: ";
var newCustomertxt = document.createElement("input");
newCustomertxt.setAttribute("type", "text");
var delBtn = document.createElement("input");
delBtn.setAttribute("type", "button");
delBtn.setAttribute("value", "Delete");
delBtn.setAttribute("id", "btnDelete");
var newArticle = document.createElement("article");
newArticle.appendChild(newCustomerlbl);
newArticle.appendChild(newCustomertxt);
newArticle.appendChild(delBtn);
var customerSection = document.getElementById("customerRecords");
var customerArticles = customerSection.getElementsByTagName("article");
for (var i = 0; i < customerArticles.length; i++) {
var lastDigit = i + 1;
var newArticleValue = "article" + lastDigit;
newArticle.setAttribute("id", newArticleValue);
}
customerSection.appendChild(newArticle);
}
现在我想要的是,每当用户单击新创建的附加删除按钮时,只会删除该特定文章而不影响其余文章。
这是 my jsFiddle 代码。
您需要在新建的删除按钮上绑定一个事件监听器。您关于使用 $(this)
的示例代码表明您正在使用 JQuery,但是在其余代码中您又没有使用任何 JQuery?
如果您使用 JQuery,事情就变得非常简单,只需添加类似
的内容
$(document).on('click','.btnDelete', function(){
$(this).closest('article').remove();
});
(并且记得给删除按钮一个 CLASS 而不是 ID,因为会有多个删除按钮)。
如果您不使用 JQuery,则每次创建新的删除按钮时都需要添加事件侦听器
newArticle.appendChild(delBtn);
delBtn.onclick = function(.....
等等
如果您不想使用 jQuery,您可以将事件侦听器添加到您的按钮:
delBtn.addEventListener('click', function () {
this.parentElement.remove();
}, false);
我有一个 section 元素,其中包含一个 article 元素。另外,我有一个带有 'onclick' 事件的输入按钮。每当此事件触发时,一个新的 article 元素将附加到具有 unique id 的 section 元素。 newArticle 元素包含标签、文本框和删除按钮。所有这三个元素都在单击事件中创建。
document.getElementById("addRow").onclick = function () {
var newCustomerlbl = document.createElement("label");
newCustomerlbl.innerHTML = "Cutomer Name: ";
var newCustomertxt = document.createElement("input");
newCustomertxt.setAttribute("type", "text");
var delBtn = document.createElement("input");
delBtn.setAttribute("type", "button");
delBtn.setAttribute("value", "Delete");
delBtn.setAttribute("id", "btnDelete");
var newArticle = document.createElement("article");
newArticle.appendChild(newCustomerlbl);
newArticle.appendChild(newCustomertxt);
newArticle.appendChild(delBtn);
var customerSection = document.getElementById("customerRecords");
var customerArticles = customerSection.getElementsByTagName("article");
for (var i = 0; i < customerArticles.length; i++) {
var lastDigit = i + 1;
var newArticleValue = "article" + lastDigit;
newArticle.setAttribute("id", newArticleValue);
}
customerSection.appendChild(newArticle);
}
现在我想要的是,每当用户单击新创建的附加删除按钮时,只会删除该特定文章而不影响其余文章。
这是 my jsFiddle 代码。
您需要在新建的删除按钮上绑定一个事件监听器。您关于使用 $(this)
的示例代码表明您正在使用 JQuery,但是在其余代码中您又没有使用任何 JQuery?
如果您使用 JQuery,事情就变得非常简单,只需添加类似
的内容$(document).on('click','.btnDelete', function(){
$(this).closest('article').remove();
});
(并且记得给删除按钮一个 CLASS 而不是 ID,因为会有多个删除按钮)。
如果您不使用 JQuery,则每次创建新的删除按钮时都需要添加事件侦听器
newArticle.appendChild(delBtn);
delBtn.onclick = function(.....
等等
如果您不想使用 jQuery,您可以将事件侦听器添加到您的按钮:
delBtn.addEventListener('click', function () {
this.parentElement.remove();
}, false);