Jquery - 删除一个表单元素

时间:2013-09-09 21:03:49

标签: jquery duplicate-removal

我正在使用一些非常糟糕的遗留代码,我有这个函数返回一个对话,问题是对话包含重复的表单 - 它们是完全相同的形式。所以我有类似的东西:

<div id="bla">
    <form> ... </form> 
    <form> ... </form>
</div>

这是一个data对象,所以当我console.log(data);时,我得到的输出与你上面看到的相似。现在我尝试了:

data = $("form").get();

哪种工作,但为了打开对话框我需要包装div。基本上我想要的是:

<div id="bla">
    <form> ... </form> 
</div>

有什么想法吗?我已经尝试过返回并在代码库中修复此问题,但如果对此问题进行了简单的修复,则需要更多时间。

更新

我道歉,我不清楚这个对话框如何获取它的数据。要传入数据,请执行以下操作:

 self.load = function(noteId){
        if(noteId === undefined){
            noteId = 0;
        }

        CT.postSynch('site/manage/createSiteMaintenanceForm', {}, function(data){
            self.remove();
            $('body').append(data);
            self.init();
            self.show();
        });

        return self;
    }

当我们$('body').append(data);得到双重形式的上述输出时,要关注的部分是console.log(data)

3 个答案:

答案 0 :(得分:1)

假设您的数据只是一个简单的HTML字符串,您可以试试这个:

CT.postSynch('site/manage/createSiteMaintenanceForm', {}, function(data){
        self.remove();
        var $data = $(data);

        $data.find('#bla form').first().remove();
        $data.appendTo('body');
        self.init();
        self.show();
    });

基于我刚刚嘲笑的jsFiddle

答案 1 :(得分:0)

您可以使用以下代码执行此操作。例如,如果您的表单是这样的:

<div id="container">
    <form action="ACTION">Hello</form>
    <form action="ACTION">Hello 2</form>
</div>

然后你需要的唯一jQuery如下:

$('#container').find(">:first-child").remove(); 

或者,如果包含的div具有不同的名称,您也可以使用它:

$('#container form').first().remove();

请告诉我这是否有帮助!

快速编辑:一个更好的解决方案,将它们结合起来:

$('#container').find('form').first().remove();

答案 2 :(得分:0)

你可以做到:$('#bla form').eq(1).remove();

example

<子> 文档:
http://api.jquery.com/eq/
http://api.jquery.com/remove/