首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加textfield运行良好,但删除textfield失败。

添加textfield运行良好,但删除textfield失败。
EN

Stack Overflow用户
提问于 2014-08-09 07:34:51
回答 4查看 26关注 0票数 0

我正在开发一个jQuery添加/删除textfields特性。添加textfields很好,但删除textfields似乎是个问题。

代码语言:javascript
复制
$(function () {
    var json = {
        "welcomeList": ["Thanks for coming", "Please select from the following list", "dwadwadsds"],
            "endList": ["Press come again", "Press 0"]
    };

    $.each(json.welcomeList, function (_, vv) {
        $('<p><label for="p_scnts"><input type="text" class=cnt" size="20" name="p_scnt" value="' + vv + '"placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo('#p_scents');
    });

    var scntDiv = $('#p_scents');
    var i = $('#p_scents p').size() + 1;

    $('#addScnt').on('click', function (event) {
        $('<p><label for="p_scnts"><input type="text" id="p_scnt_' + i + '" size="20" name="p_scnt_' + i + '" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv);
        i++;
        return false;
    });

    $('#remScnt').on('click', function () {
        alert("Hello 1");
        if (i > 2) {
            $(this).parents('p').remove();
             alert("Hello 3");
            i--;
        }
        alert("Hello 2");
        return false;
    });
});  

我为同样的目标创建了一个小提琴。为什么不起作用?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-09 07:48:25

您正在创建具有相同ID的元素,并且使用不绑定到所创建元素的事件处理程序,下面是一种更好的方法

代码语言:javascript
复制
$(function () {
    var json = {
        "welcomeList": ["Thanks for coming", "Please select from the following list", "dwadwadsds"],
            "endList": ["Press come again", "Press 0"]
    }, i = 0;

    $.each(json.welcomeList, function (_, val) {
        $('#p_scents').append(createInput(++i, val));
    });

    $('#addScnt').on('click', function (event) {
        event.preventDefault();
        $('#p_scents').append(createInput(++i), '');
    });

    function createInput(i, vv) {
        var p     = $('<p />'),
            label = $('<label />', {'for' : 'p_scnts' + i}),
            input = $('<input />', {
                type        : 'text', 
                'class'     : 'cnt', 
                size        : 20, 
                name        : 'p_scnt', 
                value       : vv,
                placeholder : 'Input Value'
            }),
            anchor = $('<a />', {
                href : '#', 
                id   : 'remScnt' + i,
                text : 'Remove',
                on   : {
                    click: function() {
                        $(this).closest('p').remove();
                    }
                }
            });

        return p.append(label.append(input), anchor);
    }
});

小提琴

票数 1
EN

Stack Overflow用户

发布于 2014-08-09 07:43:37

对于提供的fiddle,您正在使用相同的id= remScnt创建<a>标记,这是错误的,而且jquery无法识别它们。

票数 0
EN

Stack Overflow用户

发布于 2014-08-09 07:43:49

首先,不要使用相同的id remScnt来删除按钮,让它有机会类,然后修改您的删除代码,如下所示:

代码语言:javascript
复制
 $(document).on('click','.remScnt',function (event) {        
    if (i > 2) {
        $(this).parents('p').remove();
        i--;
    }
    return false;
 });

演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25216334

复制
相关文章

相似问题

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