Javascript 如何移动HTMLDOM元素的开始和结束标记?

Javascript 如何移动HTMLDOM元素的开始和结束标记?,javascript,jquery,html,dom,dom-traversal,Javascript,Jquery,Html,Dom,Dom Traversal,如何更改此选项: 为此: 使用jQuery?注意,我特别希望只移动开始和结束标记,而不是该表单的子元素。最好我想要一些jQuery.fn,这样我就可以: $('.move me').changeNesting('.container'); 提前谢谢 使用and,如下所示: $('.container').wrap( $('form.move-me').detach() ); $('.move me').replaceWith(函数(){ 返回$('*',本); }); $('.con

如何更改此选项:


为此:


使用jQuery?注意,我特别希望只移动
开始和结束标记,而不是该表单的子元素。最好我想要一些
jQuery.fn
,这样我就可以:

$('.move me').changeNesting('.container');
提前谢谢

使用and,如下所示:

$('.container').wrap( $('form.move-me').detach() );
$('.move me').replaceWith(函数(){
返回$('*',本);
});
$('.container').wrap('');​
演示

var$form=$('form.move me')
$form.replaceWith($form.html());
$('.container').wrap('');

使用
展开
包裹

var toMove = $('.move-me'​);
toMove.​​​​​​children().unwrap()​;
$('.container'​).wrap(toMove);​
更新:请注意,如果表单包含嵌套的原始文本,则上述代码将不起作用。您可以使用另一个标签来包装表单的子项,以使其工作(也可以使用Yoshi在评论中指出的
end
):

$(“.container”).wrap(
$('.move me').wrapInner('.children().unwrap().end()
);​​​​

我会将表单标记中需要的元素添加到表单标记中,然后删除旧的。@PitaJ:因为我有一堆视图文件,这些文件是由布局中的Yii小部件生成的。像这样的动态黑客将节省大量时间重新格式化所有原始HTML…作为旁注,如果您可以在项目中使用
输入
元素的
表单相关属性,则无需跳过所有这些障碍。这里是关于它的。@raina77ow-我刚刚注意到这个评论。这让我省去了一个大麻烦,对我来说是最好的答案。我知道我要求一个jQuery解决方案,但是,重新构造DOM对我的Yii-activeform事件处理程序做了各种疯狂的事情,还导致了一个CKEditor实例自身复制。使用HTML5
form
属性绕过了所有这些废话。这个解决方案适用于一个管理系统,它有一个封闭的用户组,锁定在webkit浏览器上,这对我来说是完美的。谢谢!!!!:)@亚当斯基那甚至不是答案中的密码。这一条同样有效,而被接受的答案也能打动孩子们。正如您所指出的,这不是您希望代码做的@Jordão使用你可以跳过额外的变量。()@Yoshi:我遗漏了什么吗?它不起作用。请参阅我的:+1,因为它解决了比公认答案更有趣的问题。)@Jordão和其他人-非常感谢大家的讨论和回答,这为我节省了太多时间!)解决方案无法将内部内容与原始请求放在同一位置。。。这(几乎)与这个问题的第一个答案相同,这个答案被删除了-(可能)因为它的作者也觉得内部元素应该保持原样。)
var $form=$('form.move-me')
$form.replaceWith($form.html()));
$('.container').wrap('<form class="move-me">');
var toMove = $('.move-me'​);
toMove.​​​​​​children().unwrap()​;
$('.container'​).wrap(toMove);​
$('.container').wrap(
  $('.move-me').wrapInner('<div class="nostyle"/>').children().unwrap().end()
);​​​​