如何用jQuery移除KindEditor自动生成的冗余<br>标签
解决KindEditor自动添加冗余
<br>标签的jQuery方案 嘿,我太懂你这种烦恼了——用KindEditor的时候,它时不时自动在段落开头插个多余的<br>标签,完全没必要还影响排版。针对你说的要移除代码块A、B里的开头<br>,但保留代码块C里的需求,我给你整理了精准的jQuery处理方案:
核心思路
我们只需要定位**<p>标签内紧跟在最开头、没有任何前置文本或元素**的<br>标签,把这类冗余标签删掉就行,这样就不会误删段落中间正常的换行标签。
实现代码
// 遍历所有p标签,清理开头的冗余<br> $('p').each(function() { // 获取p标签下的第一个子节点(包括文本节点,避免漏判空格) const firstNode = $(this).contents().first(); // 只有当第一个节点是<br>,且它前面没有任何节点时,才移除 if (firstNode.is('br') && firstNode.prev().length === 0) { firstNode.remove(); } });
对应你的代码块验证
- 代码块A:原内容是
<p> <br> <!-- it's useless now; need to remove --> Taiwan next <br> Taichung goes global! </p>
处理后会变成<p> <!-- it's useless now; need to remove --> Taiwan next <br> Taichung goes global! </p>,开头的冗余<br>被成功移除,段落中间的<br>保留。 - 代码块B:
<p> <br>...的内容
同样,开头的<br>会被清理掉,不影响后面的内容。 - 代码块C:如果是类似
<p> 正常内容 <br> 换行内容 </p>的结构,因为第一个子节点是文本内容,不会触发移除逻辑,所以里面的<br>会被保留。
进阶:提交前自动处理
如果你想在提交KindEditor内容前自动执行清理,可以绑定提交按钮的点击事件:
// 假设你的提交按钮ID是submitContent $('#submitContent').on('click', function(e) { // 先执行标签清理 $('p').each(function() { const firstNode = $(this).contents().first(); if (firstNode.is('br') && firstNode.prev().length === 0) { firstNode.remove(); } }); // 这里可以继续写你的表单提交逻辑 });
内容的提问来源于stack exchange,提问作者flyingfox
相关产品推荐
相关产品推荐

