如何在单击按钮时删除 DOM 元素
How do I delete DOM element on a button click
function removeDOM() {
debugger;
alert('sahd');
}
<div style="padding-top:8px;padding-left:5px;border:solid;border-color:black;border-width:thin;width:350px;height:75px;" id="divv">
<label>Abcd1</label>
<input type="button" onclick="removeDOM(); return false;" />
<label>Abcd1</label>
<input type="button" onclick="removeDOM(); return false;" />
<label>Abcd1</label>
<input type="button" onclick="removeDOM(); return false;" />
</div>
上面是我的代码,它呈现了三个标签和三个按钮。如果我单击第一个按钮,则应删除Abcd1
标签。
我可以在 removeDOM
函数中使用以下代码吗?
$(this).parents('label').remove();
你需要将点击的元素传递给函数
<div style="padding-top:8px;padding-left:5px;border:solid;border-color:black;border-width:thin;width:350px;height:75px;" id="divv">
<label>Abcd1</label>
<input type="button" onclick="removeDOM(this); return false;" />
<label>Abcd1</label>
<input type="button" onclick="removeDOM(this); return false;" />
<label>Abcd1</label>
<input type="button" onclick="removeDOM(this); return false;" />
</div>
然后
function removeDOM(el) {
el.parentNode.removeChild(el.previousElementSibling)
}
演示:小提琴 - 支持的 IE>= 9
您可以使用 element.previousSibling 执行此操作,请尝试以下代码:
function removeDOM(button) {
var previuosLabel;
// always remove the white space between the button and the label
while((button.previousSibling).nodeType !== 1) {
button.parentNode.removeChild((button.previousSibling));
}
previuosLabel=button.previousSibling;
if(previuosLabel.nodeType === 1) {
button.parentNode.removeChild(previuosLabel);
}
}
然后这样称呼它:
<input type="button" onclick="removeDOM(this); return false;" />
这将始终检查button
和label
之间是否有空白,并在删除label
之前将其删除,在这种情况下,请确保标签将被删除。
这是一个工作小提琴
更新您的onclick
s以将this
传递到函数中:
onclick="removeDOM(this); return false"
。然后在 removeDOM
中,您可以使用参数的 previousSibling
或 previousElementSibling
属性。
function removeDOM(element) {
element.previousElementSibling.remove();
}
这假设兄弟姐妹在那里。如果可能不是:
function removeDOM(element) {
if (element.previousElementSibling) {
element.previousElementSibling.remove();
}
}
现场示例:
function removeDOM(element) {
if (element.previousElementSibling) {
element.previousElementSibling.remove();
}
}
<div style="padding-top:8px;padding-left:5px;border:solid;border-color:black;border-width:thin;width:350px;height:75px;" id="divv">
<label>Abcd1</label>
<input type="button" onclick="removeDOM(this); return false;" />
<label>Abcd1</label>
<input type="button" onclick="removeDOM(this); return false;" />
<label>Abcd1</label>
<input type="button" onclick="removeDOM(this); return false;" />
</div>
如果您需要支持较旧的浏览器,它们可能没有 previousElementSibling
或 remove
,这使事情复杂化:
function removeDOM(element) {
var prev;
for (prev = element.previousSibling; prev; prev = prev.previousSibling) {
if (prev.nodeType === 1) { // Element
prev.parentNode.removeChild(prev);
break;
}
}
}
现场示例:
function removeDOM(element) {
var prev;
for (prev = element.previousSibling; prev; prev = prev.previousSibling) {
if (prev.nodeType === 1) { // Element
prev.parentNode.removeChild(prev);
break;
}
}
}
<div style="padding-top:8px;padding-left:5px;border:solid;border-color:black;border-width:thin;width:350px;height:75px;" id="divv">
<label>Abcd1</label>
<input type="button" onclick="removeDOM(this); return false;" />
<label>Abcd1</label>
<input type="button" onclick="removeDOM(this); return false;" />
<label>Abcd1</label>
<input type="button" onclick="removeDOM(this); return false;" />
</div>
相关文章:
- IE9-添加和删除DOM元素会破坏父keydown事件
- JQuery.删除DOM树中的上一个同级
- 从 DOM 数组中删除 DOM 对象
- 如何在单击按钮时删除 DOM 元素
- 如何删除DOM事件处理程序的重复JavaScript代码
- 突变观察者未能检测到元素's删除dom
- 如何在以下脚本中删除dom选择器中的链接
- 无法使用 Javascript 删除 DOM 元素
- Angular js 避免在用户无限滚动和删除 dom 元素时重复数据
- 删除 DOM 事件观察器
- 删除 DOM 的所有元素中的属性
- jquery 中的 .remove() 不会立即删除 DOM
- 避免使用 jquery 创建和删除 DOM 的对象发生内存泄漏
- 如何在 Angularjs 视图中删除 dom 实例
- 尝试从 dom 文档中删除 dom 节点时出错
- 我应该在删除 DOM 元素后调用 jQuery.off 吗?
- 通过将 href 与 javascript 匹配来删除 dom 元素
- 如何从指令中查找和删除 DOM 元素
- 如何删除 DOM 就绪处理程序,以便可以触发 Javascript 函数
- DOM 元素 dblclick 事件在删除 dom 元素时单击事件后更改