昨天接到一个新的需要,在后台文章编辑器中,每一个文章的正文前面,可以单独添加一个电头字段,但是如果在富文本编辑器中最上面就添加图片的话,图片就会把电头和正文中的文字给隔开。需要做的是获取到电头字段,然后在正文中的文字部分的最前面插入电头字段。具体看下图:
原始的代码:
XXXXX网讯(某某某)
强冷空气这几天正在影响我国,大部地区经历激烈冷暖转换。这个时节为什么还会出现如此大幅度的降温?气温起伏大容易诱发哪些疾病?哪些人群应该重点注意身体?今天的春日健康帖带大家一起了解。
这几天,强冷空气影响我国,北方大部地区气温下降明显,多地最高气温仅个位数。同时,山西、陕西等积雪较深的地区仍有雨雪天气。西南地区东部到长江中下游一带不少地方最高气温降到15℃左右,寒凉程度仿佛退回了常年3月上中旬。
为什么4月下旬还会出现如此大幅度的降温?
中央气象台首席预报员孙军表示,我国4月份出现这种较强冷空气过程,还是比较多的。我国春季冷暖空气相对活跃,此时冷空气强度往往会更强一些。冷空气来临前,我国大部地区受暖湿气流控制,气温上升较快,温度也相对较高。随着冷空气到来,降温幅度就会比较大。
我开始的思路是:循环遍历p标签,把第一个p标签中的span标签删除并提取出来,然后在第2个p标签的最前面,把提取出来的span标签拆入进去。再重新渲染出来。
需要注意的一点是,每段文字开头都有空格,而电头插入进来后和后面的文字之间不能有空格,所以还要把第一段开头的空格过滤掉,然后再插入电头,同时电头左侧也需要空两个格。
$(function() { var span = $(".detail_txt #detail_header") var detail = $(".detail_txt") var pFirst = $(".detail_txt p:first-child"); pFirst.find("span").remove() var arr = [] detail.children().each(function(i) { if (i == 1){ arr.push("" + " " + span.html() + "" +$(this).html().replace( /^\s*/, "") + "
") } else { arr.push("" +$(this).html() + "
") } }); var jsonString = arr.join(""); detail.html(jsonString)})
效果:可以看到需求实现了
但是又有了一个新的问题,因为不能保证用户在编辑器里面会插入几张图片,如果插入多个图片,那么就不一定是第2个p标签中有文字,所以上面的代码就不能用了。
还有一个恶心的地方在于,每一个图片不一定是在一个单独的p标签里面,如果用户插入一张图片后,按了回车,那么就会生成一个p标签;如果用户插入一张图片以后没有回车,而是直接输入了文字,那么图片和文字就会在一个p标签里面。
例如下面代码:
XXXXX网讯(某某某)
强冷空气这几天正在影响我国,大部地区经历激烈冷暖转换。这个时节为什么还会出现如此大幅度的降温?气温起伏大容易诱发哪些疾病?哪些人群应该重点注意身体?今天的春日健康帖带大家一起了解。
这几天,强冷空气影响我国,北方大部地区气温下降明显,多地最高气温仅个位数。同时,山西、陕西等积雪较深的地区仍有雨雪天气。西南地区东部到长江中下游一带不少地方最高气温降到15℃左右,寒凉程度仿佛退回了常年3月上中旬。
为什么4月下旬还会出现如此大幅度的降温?
中央气象台首席预报员孙军表示,我国4月份出现这种较强冷空气过程,还是比较多的。我国春季冷暖空气相对活跃,此时冷空气强度往往会更强一些。冷空气来临前,我国大部地区受暖湿气流控制,气温上升较快,温度也相对较高。随着冷空气到来,降温幅度就会比较大。
新的思路:先把第一个p标签中的span标签删除并提取出来,然后循环p标签,判断哪些里面包含中文(注意,这个时候第一个p标签里面已经没有了中文,因为前面已经把span标签删除掉了),获取到第一个包含中文的p标签的索引值,然后再获取到该p标签中的内容。判断里面是否包含img标签,包含的话,就把img标签和文字中间插入前面提取出来的电头;不包含的话,就直接在开头插入前面提取出来的电头。(还要注意清除掉文字开头的空格,并在电头前补空格)
遇到几个问题:
1、在img标签和文字中间插入电头的时候遇到了点问题,我开始是准备获取最后一个img标签的“>”字符位置,在下一个位置中插入电头字段,然后整段内容用正则清除空格。
str = str.replace(/\s+/g,""); // 去除所有空格
这个正则是去除所有空格,会把img标签里的空格也都去掉,就像这样:
然后换成去除左空格
str = str.replace( /^\s*/, ""); // 去除左空格
先获取了最后一个img标签的“>”字符位置,然后清除文字左侧空格,后面在插入电头的时候发现:插入的索引位置有偏差。
这个颠倒一下就可以,先清除文字左侧空格,然后再获取最后一个img标签的“>”字符位置。索引位置的问题解决了。
2、发现用去除左空格的正则,去不掉图片和文字中间的空格,类似这样:
想了一个笨方法:把img标签都提取出来,再把文字都提取出来并清除左侧空格,然后把这两个部分再重新组合在一起。或者也可以把img标签删除并提取出来,把剩下的文字用正则去除左侧空格,再把img标签再插入回来。
第一个方法:
// 取img标签var begin = pStr.html().indexOf("<") // 这行可以不要,下面直接从0开始var end = pStr.html().lastIndexOf(">")var imgStr = pStr.html().substring(begin,end + 1); // (0,end + 1)// 取文字var txtStr = pStr.html().substring(end + 2)// 把img和文字重新整合,并删除文字的左侧空格var newStr = imgStr + txtStr.replace( /^\s*/, "")
第二个方法:
// 取img标签var end = pStr.html().lastIndexOf(">")var imgStr = pStr.html().substring(0, end + 1); // 取文字var txtStr = pStr.html().replace(imgStr, "")// 把img和文字重新整合,并删除文字的左侧空格var newStr = imgStr + txtStr.replace( /^\s*/, "")
大家有什么其他更好的方法,可以给我留言,谢谢。
下面贴下完整代码:
在图片和文字中间插入电头 <script src="/js/jquery.min.js"></script><script> $(function() { // var span = $(".detail_txt #detail_header") // console.log(span.html()) // var detail = $(".detail_txt") // var pFirst = $(".detail_txt p:first-child"); // pFirst.find("span").remove() // console.log("0", detail.html()) // var arr = [] // detail.children().each(function(i) { // if (i == 1){ // arr.push("XXXXX网讯(某某某)
强冷空气这几天正在影响我国,大部地区经历激烈冷暖转换。这个时节为什么还会出现如此大幅度的降温?气温起伏大容易诱发哪些疾病?哪些人群应该重点注意身体?今天的春日健康帖带大家一起了解。
这几天,强冷空气影响我国,北方大部地区气温下降明显,多地最高气温仅个位数。同时,山西、陕西等积雪较深的地区仍有雨雪天气。西南地区东部到长江中下游一带不少地方最高气温降到15℃左右,寒凉程度仿佛退回了常年3月上中旬。
为什么4月下旬还会出现如此大幅度的降温?
中央气象台首席预报员孙军表示,我国4月份出现这种较强冷空气过程,还是比较多的。我国春季冷暖空气相对活跃,此时冷空气强度往往会更强一些。冷空气来临前,我国大部地区受暖湿气流控制,气温上升较快,温度也相对较高。随着冷空气到来,降温幅度就会比较大。
" + " " + span.html() + "" +$(this).html().replace( /^\s*/, "") + "
") // } else { // arr.push("" +$(this).html() + "
") // } // }); // console.log(arr) // var jsonString = arr.join(""); // console.log(jsonString); // detail.html(jsonString) // 获取电头字段 var span = $(".detail_txt #detail_header") // console.log(span.html()) var detail = $(".detail_txt") // 获取第一个P var pFirst = $(".detail_txt p:first-child"); // 删除span标签 pFirst.find("span").remove() // console.log("0", detail.html()) var arr = [] // 存储P中带中文. var pNum = [] detail.children().each(function(i) { var str = $(this).html(); // 判断P中带中文的 if( str.match(/[\u4E00-\u9FA5]+/) ){ pNum.push(i) } // 逐条添加到数组 arr.push("" +$(this).html() + "
") }); // 第一个包含中文的p var num = pNum[0] // 取第一个包含中文的p的内容 var pStr = $(".detail_txt p:nth-of-type( " + (num+1) + ")"); // 判断p中是否包含img标签 var img = pStr.find("img").length; // console.log("img",img) if (img) { // 取img标签 var begin = pStr.html().indexOf("<") var end = pStr.html().lastIndexOf(">") var imgStr = pStr.html().substring(begin,end + 1); // (0, end + 1) // console.log("imgStr",imgStr) // 取文字 var txtStr = pStr.html().substring(end + 2) //var txtStr = pStr.html().replace(imgStr, "") // console.log("txtStr",txtStr) // 把img和文字重新整合,并删除文字的左侧空格 var newStr = imgStr + txtStr.replace( /^\s*/, "") // 取整合后的img最右标签位置 var index = newStr.lastIndexOf(">") // console.log(newStr) // 在图片和文字中间插入电头 pStr = insertStr(newStr, index + 1, "" + " " + span.html() + "") // console.log(pStr) } else { // 没有图片就直接插入电头,并删除文字的左侧空格 pStr = "" + " " + span.html() + "" + pStr.html().replace( /^\s*/, "") } // console.log("pStr",pStr) // souece 原字符串 start 要截取的位置 newStr 要插入的字符 function insertStr(source, start, newStr) { return source.slice(0, start) + newStr + source.slice(start) } // console.log("aer",arr) // 整合插入后的P存入数租 arr[num] = ""+pStr+"
" // console.log("111",arr[num]) // 数组转字符串 var jsonString = arr.join(""); // 重新渲染到页面 detail.html(jsonString) }) </script>
最终效果图:
终于搞定了,记录下以便后期参考。大家有什么好的方法建议,欢迎给我留言。
标签:
-
jQuery 在图片和文字中插入内容(多种情况考虑)
昨天接到一个新的需要,在后台文章编辑器中,每一个文章的正文前面,可以单独添加一个电头字段,但是如果在
-
【世界播资讯】麦加统一队长:利雅得胜利众星云集,踢得很混乱,我...
麦加统一队长:利雅得胜利众星云集,踢得很混乱,我们的斗志更胜一筹!利雅得胜利高层:球队再次失败,临时
-
环球看热讯:“数智出海”助中国好货通全球
中国商务新闻网是商务部国际商报社主办,国家互联网信息办公室批准的国家一类新闻网站,是全国商务系统网络
-
“一寸土地一寸金”——青年土壤科研工作者与土地的故事
“一寸土地一寸金”——青年土壤科研工作者与土地的故事
-
深夜利空!狂泻35%,美国零售巨头申请破产,倒闭潮来袭!7000亿存款紧急出逃,这家银行暴跌22%-世界热议
是,昔日美国最大的家居用品零售巨头3B家居宣布,已申请破产保护。值得一提的是,3B家居曾为美国最大的家居
-
《蜘蛛侠:纵横宇宙》曝角色海报 六位蜘蛛侠齐亮相_时快讯
近日,《蜘蛛侠:纵横宇宙》角色海报正式发布,迈尔斯、格温以及蜘蛛侠2099、印度蜘蛛侠、蜘蛛女侠、蜘
-
海南洋浦地区海关一季度帮企业减免税款1.3亿元
今年一季度,洋浦地区海关持续推进“六大行动”,助推“零关税”三张清单、跨关区保税油直供等惠企政策落地
-
《火山的女儿》游戏结局一览
《火山的女儿》游戏结局有哪些?触发条件是什么?《火山的女儿》有很多种的人物结局,这里带来了《火山的女
-
快资讯:肺结核和感冒如何区分?该怎样预防?这些知识要知道→
肺结核和感冒如何区分?该怎样预防?这些知识要知道→
-
环球看热讯:“傻子抢劫入狱九年”申诉进展:民警上门要求家属搜集不在场证据
2月22日,广东省高级人民法院官方微博发布信息显示:已受理申诉人李奎星就其弟李四强犯抢劫罪申诉一案,目
-
安妮日记英语课文概括_安妮日记主要内容英文
1、安妮本出生在一个富有的德籍犹太人家里,为了躲避纳粹党的残害而移居荷兰,不久,纳粹党占领了荷兰,便
-
春耕备播忙,夏粮丰收基础实
春耕备播忙,夏粮丰收基础实---谷雨时节种谷天。在江西省德兴市泗洲镇潭埠村,种粮大户王德文站上田埂,指
-
焦点!翅膀骨折落入农家小院 国家一级保护动物黑鹳获救
很快,土左旗公安局环食药侦大队民警就赶到了郭先生家中,将大鸟小心翼翼地抱进纸箱放入警车,经过与呼和浩
-
韦布在分子云中发现行星组成 环球关注
科技日报北京4月24日电(记者张梦然)《自然·天文学》发表的一篇论文提出,在小麦哲伦云(一处比邻银河系
-
溢价近400倍拍下锂矿后弃购,官方出手了_新要闻
溢价近400倍拍下锂矿后弃购,官方出手了,锂矿,锂电,特变电工,有色金属,碳酸锂价格
-
最新消息:去年青海完成国土绿化525.5万亩
本报西宁4月24日电(记者贾丰丰)记者从青海省林业和草原局了解到:2022年青海省全年完成国土绿化525 5万亩
-
美国迪士尼公司开始新一轮裁员计划
当地时间4月24日,美国华特迪士尼公司(简称迪士尼公司)开始新一轮裁员计划,裁员总数达到4000人
-
视焦点讯!“二阳”上热搜,五一还能愉快玩耍吗?专家:目前不存在大规模流行的条件
近日,多地网友在社交平台上晒出自己的阳性抗原,称二阳了。中国疾控中心发布数据称,4月14日至4月20日新发
-
天天关注:预计未来三天我省还有大风、弱降水天气;4月25日太原多云转晴 最高温度14℃,气温逐渐回升!
视频加载中 受冷空气影响,预计未来三天我省还有大风、弱降水天气。具体预报如下:今天夜间:全省多云,
-
沈梦辰五一姐妹团建拍照范本,白衬衫配牛仔裙超显嫩,拍照有点费腿
这两年可以说浪姐是一档相当成功的综艺节目了,两季都引起了大量的关注,吸粉无数,话题无数。而作为湖南卫
-
1991年属羊离婚,1991年属羊的婚姻感情怎么样
不过大多数人可能介于这两者之间,分开多少有些不舍,需要时间去走出来,来看看12生肖忘掉前任都需要多久吧
-
魔法英雄的放置战争好玩吗 魔法英雄的放置战争玩法简介
期待已久的手游魔法英雄的放置战争即将登陆九游,这款手机游戏吸引了大批玩家的关注,想下载这款游戏,有很
-
情愫是什么意思_情愫
1、[解释]1 感情:朝夕相处,增加了他们之间的情愫。2、2 本心,真情实意:他们在一起很快乐,总是喜欢互倾
-
沃特股份:部分产品根据公司与客户合作约定,不便透露客户具体名称-环球即时
沃特股份(002886)04月24日在投资者关系平台上答复了投资者关心的问题。
-
金字火腿2023年第一季度营收1.2亿 净利2085.57万 管理费用增加 全球看热讯
金字火腿2023年第一季度营收1 2亿净利2085 57万管理费用增加2023 4 2422:58:27挖贝网易凡挖贝网4月24日,金字火腿(0
-
多家体外诊断企业发布一季度成绩单 市场扩容明显加速|世界观天下
据东方财富Choice数据显示,截至4月24日晚7点记者发稿,A股市场已有9家体外诊断上市公司发布了今年一季度业
-
蒸熟的河蟹有什么功效作用 河蟹有什么营养价值及功效|天天亮点
1、补充营养:河蟹作为一种海产品,富含脂肪、蛋白质、维生素、矿物质,属于人体不可缺少的营养成分,因此
-
委托银行存款纠纷律师按什么标准收取费用
律师办理债权债务案件的收费标准,由于地域的差异,各省市的收费标准是不尽相同的,综合各地的收费状况,其
-
天合光能的分拆上市“阳谋” 环球新要闻
天合光能的分拆上市“阳谋”,上市,天合光能,光伏行业,中国能源公司,中国太阳能公司
-
深交所向恒华科技发出问询函
2023年4月24日,深交所向恒华科技(SZ300365,收盘价:7 86元)发出问询函:针对“年报显示,你公司收入来
广告
X 关闭
- 航母板块12月20日涨0.08%,宝塔实业领涨,主力资金净流入1.94亿元 世界即时
- 工信部:截至10月底全国共有110个城市达到千兆城市建设标准-世界快播
- 2023-2028年中国凝胶成像仪行业市场深度分析及投资潜力预测报告-世界今亮点
- 创业慧康: 关于2019年限制性股票激励计划首次授予部分第三个解锁期解锁条件成就的公告
- 焦点快看:威海市商业银行 加大普惠金融力度 支持小微企业发展
- 当前播报:3小时!开发ChatGPT微信小程序
- 协程这么好,它能完全代替线程么?
- 湖人正式裁掉马特-瑞安 预示将有大交易发生?
- 华东数控董秘回复:公司主营业务为研发、生产和销售数控机床、普通机床及其关键功能部件,未研发钠离子电池生产设备
- 2023-2028年中国凝胶成像仪行业市场深度分析及投资潜力预测报告-世界今亮点
- 创业慧康: 关于2019年限制性股票激励计划首次授予部分第三个解锁期解锁条件成就的公告
- 焦点快看:威海市商业银行 加大普惠金融力度 支持小微企业发展
- 当前播报:3小时!开发ChatGPT微信小程序
- 协程这么好,它能完全代替线程么?
- 湖人正式裁掉马特-瑞安 预示将有大交易发生?
- 华东数控董秘回复:公司主营业务为研发、生产和销售数控机床、普通机床及其关键功能部件,未研发钠离子电池生产设备
- 今日大上海:一边核酸检测亭空空荡荡,一边电影院人流如织、快递派送量翻倍
- 本周盘点(12.12-12.16):茂业商业周涨0.27%,主力资金合计净流出300.70万元
广告
X 关闭
-
航母板块12月20日涨0.08%,宝塔实业领涨,主力资金净流入1.94亿元 世界即时
-
工信部:截至10月底全国共有110个城市达到千兆城市建设标准-世界快播
-
2023-2028年中国凝胶成像仪行业市场深度分析及投资潜力预测报告-世界今亮点
-
创业慧康: 关于2019年限制性股票激励计划首次授予部分第三个解锁期解锁条件成就的公告