试试这个。首先,我在 HTML 按钮中添加了 onclick 事件侦听器:
<item><input value="item A #1"><button onclick="onClickItem(this);">insert under</button></item>
<item><input value="item B #2"><button onclick="onClickItem(this);">insert under</button></item>
<item><input value="item C #3"><button onclick="onClickItem(this);">insert under</button></item>
<item><input value="item D #4"><button onclick="onClickItem(this);">insert under</button></item>
然后是 JavaScript:
<script>
function onClickItem( clickedItem)
{
var newElement = document.createElement( "item");
newElement.innerHTML = '<input><button>insert under</button>';
if( newElement.addEventListener)
newElement.lastChild.addEventListener( "click", function() { onClickItem( newElement) });
else if( newElement.attachEvent)
newElement.lastChild.attachEvent( "onclick", function() { onClickItem( newElement) }); // for IE8 or earlier
var parentNode = clickedItem.parentNode.parentNode;
newElement = parentNode.insertBefore( newElement, clickedItem.parentNode.nextElementSibling );
}
</script>
JavaScript 的前两行只是创建新项目(我假设您希望新项目中的元素与原始项目中的元素相同,但如果您需要其他内容,则可以更改)。
然后它添加与原始按钮相同的事件侦听器 - 这意味着新项目的行为与原始按钮相同,因此单击新项目会创建另一个项目。
最后,它使用 JavaScript insertBefore DOM 方法将新项目插入到树中,引用 nextElementSibling 以确保它被插入到单击的项目之后,而不是之前。我希望这能给你你想要的。