通过append添加的div 点击事件无效

博客介绍了为类名相同的节点添加事件的方法,通过$(document).on(“click”,“指定的元素”,function(){})将指定事件绑定到document上,新产生且符合指定元素的节点也会绑定此事件。

为类名相同的节点添加事件

$(document).on(“click”,“指定的元素”,function(){});是将指定的事件绑将document上,只要而新产生的元素符合指定的元素,就会绑定此事件 。

$(document).on("click",".class名",function(){
        var id = $(this).attr('id');
        .....
    })
<think> 我们正在处理用户关于使用jQuery删除和添加div盒子的方法的问题。根据引用内容,我们可以总结如下: 1. 引用[1]中展示了如何动态删除节点和添加节点。 - 删除节点:使用事件委托(因为节点可能是动态添加的)来监听删除按钮的点击事件,然后通过`$(this).parent().parent().remove()`来删除整个`dl`元素。 - 添加节点:通过拼接HTML字符串创建一个新的`dl`元素,然后使用`insertBefore`方法将其插入到指定元素(这里是类名为`clear`的元素)之前。 2. 引用[2]中提到了jQuery遍历元素、创建元素添加元素和删除元素的汇总。其中删除元素可以使用`remove()`方法,添加元素可以使用如`append()`, `insertBefore()`等方法。 3. 引用[3]主要讲的是CSS样式,与当前问题关系不大。 因此,我们可以给出以下步骤: ### 添加div盒子 1. **创建div元素**:可以使用jQuery的`$()`函数来创建,例如:`var newDiv = $('<div>');`。也可以直接使用HTML字符串创建,如引用[1]中的方式:`let node = "<div>...</div>";`。 2. **设置内容与属性**:在创建时可以直接在HTML字符串中包含内容,或者使用jQuery方法如`text()`, `html()`, `attr()`等来设置。 3. **添加到DOM树**:可以使用以下方法之一: - `append()`:将元素插入到指定元素的内部末尾。 - `prepend()`:将元素插入到指定元素的内部开头。 - `after()`:在指定元素之后插入(同级)。 - `before()`:在指定元素之前插入(同级)。 - `insertBefore()`:将元素插入到指定元素的前面(同级),如引用[1]中的`$(node).insertBefore($(".clear"));`。 ### 删除div盒子 1. **选择要删除的元素**:使用jQuery选择器选中要删除的div盒子。 2. **删除操作**:使用`remove()`方法。如果删除按钮在div盒子内部,可以通过事件委托来绑定事件,然后找到要删除的div并移除。例如: ```javascript $(document).on('click', '.delete-btn', function() { $(this).closest('div').remove(); // 或者根据结构使用parent()等 }); ``` 这里使用`closest('div')`来找到最近的div祖先元素,然后删除。如果结构固定,也可以使用`parent()`等。 ### 示例代码 假设我们有一个容器`#container`,里面有一些div,每个div有一个删除按钮。我们想要实现点击删除按钮删除该div,以及一个添加按钮来添加新的div。 ```html <div id="container"> <div class="box"> 盒子1 <button class="delete-btn">删除</button> </div> <div class="box"> 盒子2 <button class="delete-btn">删除</button> </div> </div> <button id="add-btn">添加盒子</button> ``` ```javascript $(function() { // 添加事件委托来处理删除按钮(包括动态添加的) $(document).on('click', '.delete-btn', function() { // 删除当前按钮所在的div盒子 $(this).closest('.box').remove(); }); // 添加新盒子的按钮 $('#add-btn').click(function() { // 创建一个新的div盒子,并添加一个删除按钮 var newBox = $('<div class="box">新盒子 <button class="delete-btn">删除</button></div>'); // 添加到容器中 $('#container').append(newBox); }); }); ``` ### 说明 - 使用`closest('.box')`可以确保我们找到包裹该按钮的div盒子,即使结构稍有变化也能适应。 - 事件委托(使用`on`方法并绑定到`document`或一个静态父元素)使得动态添加的按钮也能触发事件。 - 添加新盒子时,我们直接创建了一个包含删除按钮的div,然后添加到容器末尾。 ### 注意事项 - 如果页面中已有大量元素事件委托最好绑定到最近的静态父元素(如`#container`)而不是`document`,以提高性能。 - 创建元素时,如果内容复杂,使用HTML字符串创建可能更方便;如果简单,则可以使用jQuery方法逐步构建。 ### 相关问题 1. 如何优化大量动态元素事件委托性能? 2. jQuery中还有哪些添加元素的方法?它们有什么区别? 3. 如何给动态添加元素绑定事件而不使用事件委托? 希望这个回答能帮助您解决问题! </think> ### 使用jQuery删除和添加div盒子的方法 #### 一、删除div盒子的方法 1. **基础删除操作** 使用 `remove()` 方法直接删除选中的div元素: ```javascript // 删除所有class="box"的div $(".box").remove(); // 删除特定id的div $("#targetDiv").remove(); ``` 2. **动态生成元素的删除**(事件委托) 通过事件委托处理动态添加元素的删除,使用 `on()` 方法: ```javascript $(document).on('click', '.del-btn', function() { // 删除当前按钮的父级div(根据实际结构调整) $(this).closest('div').remove(); }); ``` ✅ **优势**:对动态添加元素有效,无需重复绑定事件[^1]。 --- #### 二、添加div盒子的方法 1. **创建新div并插入** 使用 HTML 字符串创建元素,通过插入方法添加到DOM: ```javascript // 创建带内容的div const newDiv = $('<div class="new-box">新盒子内容</div>'); // 插入方式(根据需求选择) $("#container").append(newDiv); // 插入到内部末尾 $("#refElement").before(newDiv); // 插入到元素前 $(".clear").after(newDiv); // 插入到元素后 ``` 2. **克隆现有div** 使用 `clone()` 复制已有元素: ```javascript const clonedDiv = $(".template").clone(); clonedDiv.removeClass("template"); // 移除模板类名 $("#container").append(clonedDiv); ``` --- #### 三、完整示例代码 ```html <div id="container"> <div class="box">盒子1 <button class="del-btn">删除</button></div> </div> <button id="addBtn">添加盒子</button> ``` ```javascript $(function() { // 添加新盒子 $("#addBtn").click(function() { const newBox = $('<div class="box">新盒子 <button class="del-btn">删除</button></div>'); $("#container").append(newBox); }); // 删除盒子(事件委托) $(document).on('click', '.del-btn', function() { $(this).parent().remove(); // 删除父级div }); }); ``` ▶️ **效果**: - 点击"添加盒子"按钮会在容器内添加div - 点击每个div内的"删除"按钮可删除该div --- #### 四、关键注意事项 1. **事件委托必要性** 动态添加元素必须通过 `$(document).on()` 绑定事件,直接使用 `click()` 无效[^1][^2]。 2. **元素定位技巧** - `parent()` / `parents()`:向上查找父元素 - `closest('div')`:向上查找最近的div - `find()`:向下查找子元素 3. **性能优化** 将事件委托从 `document` 改为最近的静态容器: ```javascript $("#container").on('click', '.del-btn', function() { ... }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值