从品牌网站建设到网络营销策划,从策略到执行的一站式服务
load()方法算是最简单的ajax了,非常方便,不过也有一些难以理解的地方。
创新互联公司拥有一支富有激情的企业网站制作团队,在互联网网站建设行业深耕10年,专业且经验丰富。10年网站优化营销经验,我们已为上1000+中小企业提供了成都网站建设、做网站解决方案,按需求定制开发,设计满意,售后服务无忧。所有客户皆提供一年免费网站维护!
比如不久前我出现了这样一个问题:
我的代码高亮是用pretty,它的特点是不破坏源代码,用js动态使代码着色,在载入正文后使用prettyPrint()函数使代码高亮生效。
我在另一个页面使用jQuery中的load()方法载入此页面的正文,但是代码区的高亮消失了,也就是说js代码未运行。这是可以理解的,因为load()方法并未运行原网页,而是将其当做数据传输,js根本未启动。
但是我在后面又加上prettyPrint()也依然没效果,再查看源代码才发现一个重要的问题:load()方法并未改变源代码,根本看不到我们load过来的正文内容。
我又使用find().is()来查找代码区的
标签也显示没有。一段不存在的内容,应用prettyPrint()当然没效果了。那么,load过来的内容到底去哪儿了呢?它真的不存在于任何地方吗?
不是这样的。后来我想到了曾看过的一个load()方法的教程里,讲的callback,这个以前我以为是针对load状态进行的反应,比如如果load失败可以通过这个显示一个什么之类的。现在记起来了,当时那个教程里不是将load过来的内容淡入展现吗?
这应该就是问题的关键了,于是我将prettyPrint()放入callback中,果然代码高亮出现了。
于是我知道了,load()方法里的内容的生命周期只在这个load方法之内,过了就再也找不到了!要给其中的内容应用js,需要统统放到callback里!
具体代码如下:
- $XX.load(url,function(){prettyPrint();})
文章名称:jQuery应用load()方法后js失效的问题分析与解决
当前路径:http://www.cdkjz.cn/article/iioeoc.html
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图