gpt4 book ai didi

javascript - 添加/删除子元素

转载 作者:行者123 更新时间:2023-11-28 02:43:38 24 4
gpt4 key购买 nike

我正在使用 javascript 和 jQuery 在现有 <div> 中动态添加和删除新元素。 .

添加新元素工作正常,但是当我单击“删除”来删除该元素时,我得到了主容器对象,并且按钮内的子元素对象也存在并被单击。

现在,当我尝试删除元素时,问题就出现了,我获取对象直到包含控件的 html 表格控件,但没有获取包含表格的 div。

注意:包含表格的 div 是子 div/元素。

Javascript

var ab = '<table rules="none" width="100%">'+
'<tr>'+
'<td class="optHdBg">'+
'<a><img src="themes/theme_blog/images/icons/delete.png" name="delete" önclick="javascript:remove_block(this);"/></a>'+
'</td></tr></table>';

function add()
{
var lstChild = $("#contControls").children().last();
var containerElement = document.getElementById("contControls");
var newElement = document.createElement("div");
$(newElement).addClass("optionPane");
newElement.innerHTML = ab;
document.getElementById("contControls").appendChild(newElement);
}

function remove_block(obj)
{
var mainContainer = $(obj).parents("div #contControls");
var mySelf = obj.parentNode.parentNode.parentNode.parentNode.parentNode;
mainContainer.removeChild(mySelf);
}

出现问题 mySelf由于删除操作不起作用,因此无法访问包含该表的 div 控件。

HTML代码

<div id="contControls">
<div class="optionPane">
<table rules="none" width="100%">
<tr>
<td class="optHdBg">
<a>
<img src="themes/theme_blog/images/icons/delete.png" name="delete" önclick="javascript:remove_block(this);"/>
</a>
</td>
</tr>
</table>
</div>
</div>

我无法获取 <div>具有类的元素 optionPane ;每当我尝试定位 <table> 的父级时我得到<div> ID 为 contControls .

最佳答案

Working Demo

如果您在导入 jQuery 时遇到麻烦,不妨使用它。它简化了您想要完成的所有 DOM 操作,并且您的代码归结为简单的(注意,javascript 字符串不能像您在不使用 + 的情况下那样跨越多行用于串联):

var ab = '<table rules="none" width="100%">'
+ '<tr><td class="optHdBg"><a>'
+ '<img src="themes/theme_blog/images/icons/delete.png" name="delete" />'
+ '</a></td></tr></table>';

$(document).ready(function() {
$(document).on('click', 'img[name="delete"]', function() {
remove_block(this);
});
});

function add() {
$("<div class='optionPane'></div>").html( ab ).appendTo("#contControls");
}

function remove_block(obj) {
// remove the entire optionPane <div>
$(obj).closest('div.optionPane').remove();
}​
<小时/>

此外,您应该注意,在 $(document).on('click' 行中,您可以(并且应该)替换 document 使用您要添加动态元素的任何静态父元素(可能是 #contControls,但我看不到您的 HTML);这提供了更好的性能,因为事件不必冒泡那么远访问 DOM。

关于javascript - 添加/删除子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12260831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com