将表单元素向上移动 DOM 并使其包装较低的元素
Move form element up the DOM and have it wrap lower elements
我有下面的代码
<div class="wrapper-div">
<div class="div-1">
<form class="form-1">
<input class="input-1" />
</form>
</div>
<div class="div-2"></div>
</div>
我需要采用表单元素并包装div-1 和div-2,如下图所示
<div class="wrapper-div">
<form class="form-1">
<div class="div-1">
<input class="input-1" />
</div>
<div class="div-2"></div>
</form>
</div>
我无法编辑 html,所以可以通过 jquery 执行此操作吗?我尝试使用 wrap() 函数,但这创建了一个第二个表单元素,这不是我想要的。
非常感谢任何帮助
你可以
做类似的事情
$('.wrapper-div').each(function() {
var $frm = $(this).find('form');
$frm.contents().unwrap();
$(this).wrapInner($frm)
})
div,
form {
padding: 5px;
}
.wrapper-div {
border: 1px solid red;
}
form {
border: 1px solid green;
}
.div-1,
.div-2 {
border: 1px solid blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="wrapper-div">
<div class="div-1">
<form class="form-1">
<input class="input-1" />
</form>
</div>
<div class="div-2"></div>
</div>
是的,这是可能的!只需在表单 1 中创建新元素,复制div-2 内容并将其粘贴到新元素中即可。然后,删除div-2。例:
var elem = document.getElementsByClassName('div-2')[0];
var elem_html = elem.innerHTML;
var new_elem = document.createElement("div"); //create element
new_elem.className = "div-2";
new_elem.innerHTML = elem_html; // set attributes and inner html
document.getElementsByClassName("form-1")[0].appendChild(new_elem); //copy it
elem.remove(); //remove the div
演示
演示 2(显示文档内部 html)
希望对:)有所帮助
相关文章:
- 遍历(获取)元素包装在 标记内
- 如何使用jquery将每4个元素包装在一个
- 标签中
- 如何将所有下一个元素包装到
- Jquery使用Slice将前N个元素包装成一个新元素,并将其余N个元素打包成另一个新元素
- 我正在尝试使用 html 元素包装函数的返回值
- 将所有元素包装到 :nth-child
- 如何使用jQuery将所有HTML元素包装在DIV中,具体取决于这些HTML元素的总高度
- AngularJS :使用角度属性指令将元素包装到自定义模板中
- 设计模式下的浏览器将孤立的 LI 元素包装在 UL - Firefox 和 Chrome 中
- 用 元素包装现有的内联 SVG
元素 - 在遍历数组时每三个元素包装一次
- 停止引导导航中的元素包装
- 创建指令,该指令将每个列表元素包装在引导面板中,并带有删除、重新排序…的控件…
- 如何将所有元素包装在每个容器中
- 为什么使用jQuery元素包装元素要快得多?
- 直接从body标签中删除没有被另一个父HTML元素包装的元素
- 在jQuery效果(例如slideDown)之前确定元素包装器的最终大小
- 如何用html元素包装字符串的一个区域?
- 如何用元素包装/环绕突出显示的文本
- PHP 将每 3 个元素包装在 TR for 表中