Javascript 使用jQuery删除第二个表单元素而不丢失子元素
我做了一些AJAX工作,带来了DOM中不需要的额外表单元素。我没有能力从服务器端删除它,所以我正在寻找一些jQuery或经典JavaScript,它们允许我捕获表单的所有子元素,删除我不需要的表单,最后将子元素重新附加回DOM 任何帮助都将不胜感激 编辑:谢谢你的快速回答,下面是我实际使用的,它工作得很完美Javascript 使用jQuery删除第二个表单元素而不丢失子元素,javascript,jquery,Javascript,Jquery,我做了一些AJAX工作,带来了DOM中不需要的额外表单元素。我没有能力从服务器端删除它,所以我正在寻找一些jQuery或经典JavaScript,它们允许我捕获表单的所有子元素,删除我不需要的表单,最后将子元素重新附加回DOM 任何帮助都将不胜感激 编辑:谢谢你的快速回答,下面是我实际使用的,它工作得很完美 // Captures the children var children = $("form:eq(1)").children();
// Captures the children
var children = $("form:eq(1)").children();
// Removes the form
$("form:eq(1)").remove();
// append the child elements back into the DOM
$("#fillDiv").append(children);
您应该移动子节点,而不是使用
.html()
方法(这将导致丢失与表单元素相关的任何事件):
// grab the child nodes
var children = $('#badForm').children();
// or var children = $('#badForm > *');
// move them to the body
$(body).append(children);
// remove the form
$('#badForm').remove();
如果您有这样的ajax代码:
$.ajax({
type: "get",
url: "url",
data: ,
cache: false,
success: function(data){
}
});
您可以添加success
此功能:
$(data).find('#whatYouNeed').appendTo('#whereYouNeed')
通过这种方式,你可以从该页面中提取任何你想要的内容:)你的问题仍然是真实的,但是现在有更好的答案
展开
方法:$element.replaceWith($element.contents())代码>
这肯定比将表单添加到dom中,然后尝试提取其子元素并将其删除要好@Toran,如果您有一个返回html的ajax调用,那么您应该使用此方法。@Toran:这会满足您的要求,但您可能应该使用类似@Staicu的解决方案,而不是将表单添加到dom中,然后尝试删除并留下其子项…@Toran:我的解决方案会满足您的要求,但是您可能应该使用类似@Staicu的解决方案,而不是将表单添加到dom中,然后尝试删除并保留其子元素……我只需要能够轻松地清除子元素id被不可预测地创建的div。我刚刚对您的解决方案使用了一个细微的变化:$(“#containerDiv”).children().remove();我很有钱,我甚至都不知道。谢谢。