0

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

<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)得到上述双重形式的输出时。

4

3 回答 3

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 。

于 2013-09-09T21:31:11.963 回答
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();
于 2013-09-09T21:13:57.907 回答
0

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

例子

文档:http :
//api.jquery.com/eq/ http://api.jquery.com/remove/

于 2013-09-09T21:19:39.833 回答