Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从jquery表单数据中删除json对象_Javascript_Jquery_Json - Fatal编程技术网

Javascript 从jquery表单数据中删除json对象

Javascript 从jquery表单数据中删除json对象,javascript,jquery,json,Javascript,Jquery,Json,背景: 我正在制作一个登记表,用户可以在其中输入无限多人的信息。每个人都作为json对象输入,并由字段组成,如下所示 addPerson: function() { //Create a json object for this person. var person = { id: $("#dialog").data("person"), fname: $("#dialog input[name=pfna

背景:

我正在制作一个登记表,用户可以在其中输入无限多人的信息。每个人都作为json对象输入,并由字段组成,如下所示

    addPerson: function() {
        //Create a json object for this person.


        var person = {
            id: $("#dialog").data("person"),
            fname: $("#dialog input[name=pfname]").attr("value"),
            lname: $("#dialog input[name=plname]").attr("value"),
            title: $("#dialog input[name=ptitle]").attr("value"),
            bio:   $("#dialog textarea[name=pbio]").attr("value"),
            photo: $("#dialog input[name=photo]").attr("value"),
            owner: $("#dialog input[name=owner]").prop("checked") ? $("input[name=owner]").attr('checked', true),
            percent: $("#dialog input[name=ppercent]").attr("value"),
            edu: $("#dialog textarea[name=pedu]").attr("value"),
            skills: $("#dialog textarea[name=pskills]").attr("value"),
            prof: $("#dialog textarea[name=pprof]").attr("value"),
            awards: $("#dialog textarea[name=pawards]").attr("value"),
            community: $("#dialog textarea[name=pcommunity]").attr("value"),
            years: $("#dialog input[name=pyears]").attr("value"),
            compensation: $("#dialog textarea[name=pcompensation]").attr("value"),
        }

        $(this).dialog("close");

        upsmart.people.finishAddPerson(person);
    },
添加对象后,每个人都会在网格上显示其个人资料图片和姓名,请参见下面的代码:

    finishAddPerson: function(person) {
        upsmart.people.people[person.id] = person;
        if($("#person"+person.id).length == 0) {
            box = $("<div class='person'></div>").attr("id","person"+person.id);
            box.data("person",person.id);
            box.insertBefore($("#new"));
        } else {
            box = $("#person"+person.id);
            box.html("");
        }

        box.append($("<img/>").attr("src",person.photo));
        box.append($("<div/>").attr("class","label").html(person.fname+" "+person.lname));
    }
我只是不知道如何在每个元素的按钮中应用它

如果finishadeperson()函数将元素存储在数组中,则可以使用slice函数从数组中删除元素

为了触发这个动作,我会这样做

<button class="remove-user-btn" data-person="person-id">Remove Foo User</button>
显然,parent().remove()依赖于DOM结构和您选择放置按钮的位置,但是您知道了

removePerson(personId)
将利用javascript
slice
函数从内存数组中删除该用户


我希望这有帮助。如果您需要更多示例,我可以整理一个JSFIDLE。

谢谢您的回复。实际上,我希望它不依赖于用户id,这样任何具有访问权限的用户都可以添加/删除数据集中的任何人。有没有办法不用“你的用户id”来做这件事?对不起。我应该说明的。“您的用户id”可以是任何标识字符串。我假设您将在这里使用person对象的id参数。我现在发现我输入了一些错误,我会去解决的。嘿,非常感谢你的提示。我相应地修改了函数,但我的修改似乎使脚本崩溃。更准确地说,添加按钮不是问题所在,但删除用户btn功能似乎是问题所在。我已经将修改保存在中,如果您有更多的示例,我很乐意看到它们(我对javascript的所有内容都很陌生,正在努力赶上)。非常感谢你在这里帮助我,我真的很感激。
<button class="remove-user-btn" data-person="person-id">Remove Foo User</button>
$('.remove-user-btn').bind('click', function(e) {
    removePerson($(this).attr('data-person'));

    //Remove the containing div here as well, something like
    $(this).parent().remove()
});