最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jQuery中用dom操作替代正则表达式_jquery

来源:动视网 责编:小采 时间:2020-11-27 21:31:11
文档

jQuery中用dom操作替代正则表达式_jquery

jQuery中用dom操作替代正则表达式_jquery:在B/S结构客户端越来越胖的今天,作为一名全端程序员,您很可能会在前端操作html字符串,注意,是操作html字符串,不是操作当前页面的html。 举个例子,百度推出的在线HTML富文本编辑器Ueditor,可以在线制作富文本文档,功能堪比精简版的Microso
推荐度:
导读jQuery中用dom操作替代正则表达式_jquery:在B/S结构客户端越来越胖的今天,作为一名全端程序员,您很可能会在前端操作html字符串,注意,是操作html字符串,不是操作当前页面的html。 举个例子,百度推出的在线HTML富文本编辑器Ueditor,可以在线制作富文本文档,功能堪比精简版的Microso
 在B/S结构客户端越来越“胖”的今天,作为一名全端程序员,您很可能会在前端操作html字符串,注意,是操作html字符串,不是操作当前页面的html。

举个例子,百度推出的在线HTML富文本编辑器Ueditor,可以在线制作富文本文档,功能堪比精简版的Microsoft Word。虽然Ueditor身披百度的光环,但实际效果不太让人满意,我们需要二次处理一下它生成的html字符串,比如把所有图片的宽度设成90%。

通过某个方法,我们可以拿到文本编辑器中的html字符串,假设字符串如下:

代码如下:

花一样的骚年



迷一样的金字塔



梦一样的人生



但是接下来如何处理呢?优雅的处理字符串,让我们很容易想到正则表达式,这里我们可不可以用正则呢?

答案是肯定的,先试试正则的效果。把所有图片宽度设成90%,最简单的方法是在img标签中加入style属性,然后在style中指定宽度。

用正则,第一步,先要匹配到所有img标签,由于img标签不一定有style属性,要先判断是否有style属性,接下来直接在style属性中加入width: 90%;?不,这样可能会覆盖掉原有的其他属性,那就直接追加,追加不会覆盖!还是不行,万一原来就有width呢。。

还没开始写正则表达式,先想想过程,就已经很繁琐了,其实实现起来更加复杂。

幸好我们可以换个思路,借助于jQuery解决这个问题。

jQuery强大之处在于,它能直接将一个html字符串包装成dom元素,这个dom元素不存在于当前页面中,它是放在内存中的。

通过jQuery,只需要这样一段代码即可实现:

代码如下:
//定义容器,方便获取修改后的html字符串
//直接用jQuery包装"",此时在内存中就有了一个div元素
var $container = $("");
//假设这是需要修改的html字符串
var html = "";
//直接将要修改的html字符串插入到容器中
//jQuery强大到自动将html字符串包装成dom元素,然后插入到内存中的div容器中
$container.append(html);
//在容器中搜索所有的img标签,并遍历
$container.find("img").each(function(i,n){
//对于每一个img元素,直接修改其style属性中的width属性
//如果style属性没有,自动添加;如果已经有width属性,直接修改;完全不用过多操心
$(n).css({
width: "90%"
});
});
//获取修改后的html字符串,即容器的html内容
alert($container.html());

代码中注释很详细,小菜就不多解释啦,我们要明白,jQuery不仅仅可以操作实实在在的页面中的html,也可以操作内存中的虚拟html。

通过两者对比,相信读者立即可以体会到哪个方法更好一些。

正如小菜经常说的一句话:如果你认为一个问题可以解决,但用了很长时间仍然没有解决,很可能是你的思路错了,换个角度想一想,问题迎刃而解!

文档

jQuery中用dom操作替代正则表达式_jquery

jQuery中用dom操作替代正则表达式_jquery:在B/S结构客户端越来越胖的今天,作为一名全端程序员,您很可能会在前端操作html字符串,注意,是操作html字符串,不是操作当前页面的html。 举个例子,百度推出的在线HTML富文本编辑器Ueditor,可以在线制作富文本文档,功能堪比精简版的Microso
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top