首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除由jQuery添加的按钮

删除由jQuery添加的按钮
EN

Stack Overflow用户
提问于 2015-02-27 21:32:44
回答 5查看 59关注 0票数 0

我正在使用jQuery向表单添加额外的选择和文本字段。但是,我希望能够删除添加的文本字段使用删除按钮。

一旦添加了字段,jQuery似乎无法检测到它。

jQuery

代码语言:javascript
复制
var counter = 2;

$("#addButton").click(function () {


    var newTextBoxDiv = $(document.createElement('div'))
        .attr("id", 'contact-list-div-' + counter).attr("class", 'contact-list-div');

    newTextBoxDiv.after().html('<select></select>' +
    '<input type="text" name="textbox' + counter +
    '" id="textbox' + counter + '" value="" >' + '<button type="button" class="removeButton" id="removeButton-' + counter + '">Remove Button</button>');

    newTextBoxDiv.appendTo("#contact-list");


    counter++;
});


$(".removeButton").click(function() {
    alert(this.id); //this never shows, only on the element that was 
                    //added directly added using html, in this case removeButton-1
});

HTML

代码语言:javascript
复制
    <div id="contact-list">
            <div class="contact-list-div" id="contact-list-div-1">
                <select></select>
                <input>
                <button type='button' class='removeButton' id='removeButton-1'>Remove Button</button>
            </div>
        </div>
    <input type='button' value='Add Button' id='addButton'>
EN

回答 5

Stack Overflow用户

发布于 2015-02-27 21:37:04

您需要使用event-delegation

代码语言:javascript
复制
$(document).on('click', '.removeButton',function() {
    $(this).parents('.contact-list-div').remove();                     
});

在单击 .removeButton 的事件侦听器被注册为之后,将内容附加到DOM侦听器。因此,当您将单击事件绑定到该元素时,该元素并不存在。

通过事件委派,您可以将事件列表器绑定到现有的父(在本例中为document,但也可以使用)。这将监听与.removeButton选择器匹配的后代的所有事件。

Demo

票数 2
EN

Stack Overflow用户

发布于 2015-02-27 21:38:23

代码语言:javascript
复制
$('#contact-list').on('click', '.removeButton', function() {
    //Your code                        
});
票数 2
EN

Stack Overflow用户

发布于 2015-02-27 21:37:51

这是因为您正在将事件绑定到尚不存在的元素。

使用jQuery委派在尚不存在的元素上启用处理程序:

代码语言:javascript
复制
$("body").on("click", ".removeButton", function() {
    alert(this.id); 
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28766342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档