我正在使用一些非常糟糕的遗留代码,我有这个函数返回一个对话,问题是对话包含重复的表单 - 它们是完全相同的形式。所以我有类似的东西:
<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)
。
答案 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();
<子>
文档:
http://api.jquery.com/eq/
http://api.jquery.com/remove/