根据给定的标准重新排列 DOM 元素
Rearrange DOM elements according to given standard
我会尝试描述这个问题:
我正在使用内容可编辑来编辑 DIV 中的文本。我需要在该 DIV 中拥有的元素标准是:
段:
<p style="someStyles"><span style="someStyles">TEXT GOES HERE</span></p>
空行:
<p style="someStyles"><span style="someStyles"><br></span></p>
由于某些用户文本操作,例如复制/粘贴标准在该 DIV 中被搞砸了,如下所示(例如情况):
<span style="someStyles">
<p style="someStyles">SOME TEXT HERE</p>
<p style="someStyles">SOME TEXT HERE</p>
</span>
我正在寻找一种解决方案,该解决方案将处理混乱的文本元素并将其重新排列为我上面写的给定标准,有什么建议吗?
重新排列元素后,它应该看起来像这样:
<p style="someStyles">
<span style="someStyles">SOME TEXT HERE</span>
<span style="someStyles">SOME TEXT HERE</span>
</p>
P.S - 我想在键入时对 keyup 事件进行重新排列功能,并且仅适用于插入符号所在的整个 p 元素。
正如我在评论中所说,我看不到对此的一般解决方案,但是您的具体示例可以像这样解决。您可以基于此轻松进行其他几项转换。
replace
函数就是基于这个答案。
// this converts an element to another tag
function replace(thisWith, that) {
$(thisWith).replaceWith(function() {
var i, replacement = $('<' + that + '>').html($(this).html());
for (i = 0; i < this.attributes.length; i++) {
replacement.attr(this.attributes[i].name, this.attributes[i].value);
}
return replacement;
});
}
function convert() {
// get SPANs that has Ps inside
var $spans = $("#content span").has("p");
$spans.each(function () {
// change children Ps into SPANs
replace($(this).children("p"), "span");
// change parent SPAN into P
replace(this, "p");
});
}
这是一个测试jsfiddle。
相关文章:
- 重新排列HTML元素的顺序并更改内容
- 使用CSS从下到上排列元素
- 如何在php中按元素按字母顺序排列json文件
- 有没有比在本例中使用matchMedia更聪明的方法来重新排列页面元素
- angularjs-ng视图重新排列html元素
- 排列<p>使用jQuery按日期顺序排列的元素
- 将元素排列到哈希数组中
- 根据给定的标准重新排列 DOM 元素
- 重新排列元素顺序响应式设计
- 避免多次遍历数组以重新排列元素
- 我怎样才能把元素放在垂直排列的中间
- 使用jQuery重新排列页面元素
- 按数字显式重新排列容器内的元素
- 根据条件javascript对数组元素进行分组或重新排列
- 交错排列阵列元素
- 重新排列Html元素
- 重新排列并移除容器内的元素
- 用一个简单的函数重新排列元素
- jQuery不重新排列元素在我的Django页面
- 根据元素id为'的数组重新排列元素布局;s