You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用jQuery,用原生JavaScript实现元素创建与删除功能

jQuery动态新增输入框逻辑原生JS实现方案

以下是完全等效的原生JavaScript实现代码,无需依赖任何第三方库:

document.addEventListener('DOMContentLoaded', function() {
  // 事件委托绑定点击事件,兼容动态生成的add more按钮
  document.addEventListener('click', function(e) {
    // 仅响应btn-copy类的按钮点击
    if (!e.target.classList.contains('btn-copy')) return
    e.preventDefault()

    // 获取当前按钮所属的.example-2容器
    const originContainer = e.target.closest('.example-2')
    // 深克隆容器(包含子节点和绑定的内联事件)
    const clonedContainer = originContainer.cloneNode(true)
    // 清空克隆容器内的输入框值
    clonedContainer.querySelector('input').value = ''

    // 检查克隆容器是否已有删除按钮,没有则新增
    const buttonList = clonedContainer.querySelectorAll('button')
    if (buttonList.length < 2) {
      const deleteBtn = document.createElement('button')
      deleteBtn.textContent = 'Delete'
      deleteBtn.addEventListener('click', function(ev) {
        ev.preventDefault()
        clonedContainer.remove()
      })
      clonedContainer.appendChild(deleteBtn)
    }

    // 将克隆容器插入到原容器后方
    originContainer.after(clonedContainer)
  })
})

核心替换逻辑说明

  • 原jQuery的$(function(){})DOM加载监听替换为原生DOMContentLoaded事件监听
  • 采用事件委托绑定点击事件,不需要重复给动态新增的add more按钮绑定事件,性能更优
  • 原生Element.closest()方法完全替代jQuery的$.closest(),功能一致
  • 原生Node.cloneNode(true)替代jQuery的$.clone(true)实现深克隆
  • 原生querySelector/querySelectorAll替代jQuery的元素选择器
  • 原生Element.after()替代jQuery的$.after()实现元素插入

如果需要兼容极低版本浏览器,可以将originContainer.after(clonedContainer)替换为以下代码:

originContainer.parentNode.insertBefore(clonedContainer, originContainer.nextSibling)

内容的提问来源于stack exchange,提问作者Aazim Khaki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:06:05