javascript 动态插入技术

本文讨论了提高jQuery代码效率的方法,作者提出了一种新的流程来替代原有的clean和parsehtml过程,旨在减少DOM操作并利用原生API提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

评论

2034073

#1楼

2009-12-14 09:07

ryan gene

支持下,好文!

回复 引用 查看

#2楼

2009-12-14 09:57

飞天小肥猪(膘叔)

其实,如果你的代码效率高,你可尝试提交给jquery,这样以后我们也能使用更高效率的代码 了呢?

回复 引用 查看

#3楼[楼主]

2009-12-14 10:11

司徒正美

@飞天小肥猪(膘叔)

不喜欢为他人做嫁衣裳

回复 引用 查看

#4楼

2009-12-14 10:27

jeffrey zhao

引用司徒正美:

@飞天小肥猪(膘叔)

不喜欢为他人做嫁衣裳

这……

回复 引用 查看

#5楼

2009-12-14 13:00

别爱上哥,哥只是个传说!

javascript//

回复 引用 查看

#6楼

2009-12-14 15:51

一个请求[未注册用户]

求楼主测试快很多的代码,

自己用了下没太大感觉,至少不是数量级的呢。

回复 引用

#7楼

2009-12-14 16:56

飞天小肥猪(膘叔)

我个人对js纯粹就是属于应用性的。即使是写js代码,也纯粹是为了写而写,几乎没有考虑什么效率。因此,对我来说,代码能跑起来就行了。毕竟我不是专门搞前端的。。

我是更多的关注在php上,而不是js。呵呵。

回复 引用 查看

#8楼

2009-12-15 08:53

lhgcore.j

好东西,对我来说太有用了,希望司徒兄都发这样的文章!!!

回复 引用 查看

#9楼

2009-12-15 08:56

virus

引用司徒正美:

@飞天小肥猪(膘叔)

不喜欢为他人做嫁衣裳

什么叫不喜欢为他人做嫁衣裳,你这种想法和做法,中国的环境如何改善呢,

通过那样,你可以接触到jquery的牛人,你可以进步的更多,你这种固步自封,就是你的前辈,让清朝的我们落后了别人几十年,让现在的我们不在领先,你不喜欢,那为什么你还写博客呢,你自己藏起来好了,如果你的这些好主意被jquery的人发现,而加入他们的代码库,你就知道了,你是不是怕自己的东西不够好呢

回复 引用 查看

#10楼

2009-12-15 17:16

lhgcore.j

我单拿出你的parsehtml函数测试了下,发现这种情况下出问题:

parsehtml('

abc

edor

')

是单拿出来的问题吗?

回复 引用 查看

#11楼[楼主]

2009-12-15 22:31

司徒正美

@lhgcore.j

能运行起来吗?许多东西我还没公开……

回复 引用 查看

#12楼

2009-12-15 23:17

lhgcore.j

可以,parsehtml('

abc

')就可以,而且parsehtml不知道比jq优化在哪里?

回复 引用 查看

#13楼[楼主]

2009-12-16 00:00

司徒正美

@lhgcore.j

你看清楚流程再说

jquery是所有流浏览器都要经过clean(相当于我的parsehtml)→文档碎片→insertbefore或appendchild

clean函数都是非常复杂,百分九十的时间都消耗在这里

我的流程

ie大部元素直接insertadjacenthtml或insertadjacentelement,一步都位(处理这些元素时jquery就明显不如我)

对于ie部分innerhtml是只读的元素就要走jquery的老路,经过parsehtml→文档碎片→insertbefore或appendchild(处理这部分元素我与jquery旗鼓相当)

在火狐,则用了一个重要的原生方法createcontextualfragment代替冗长的节点转换(clean、parsehtml),然后就是insertbefore或appendchild,jquery还是搞慢到死的一刀切。

在其他标准游览器,都已实现insertadjacentxxx家族,我直接一步到位,jquery还是clean→文档碎片→insertbefore或appendchild

最后告诉你,你看错重点了,parsehtml与clean并不是问题的中心,问题是如何更快的插入。dom的那套实现明显就不如源自dhtml的insertadjacentxxx,实在没办法才用dom的那套笨重的东西。

回复 引用 查看

#14楼

2009-12-16 09:48

lhgcore.j

谢谢司徒兄指导,明白了。

回复 引用 查看

#15楼

2010-01-29 16:24

bluedream

问下楼主 ff下 append不能追加元素 是bug么?

回复 引用 查看

#16楼[楼主]

2010-01-29 17:32

司徒正美

@bluedream

我的浏览器没问题

回复 引用 查看

#17楼

2011-02-26 10:56

tcdona

此文正好解决了手头的问题,等我看完博主的blog再去加您的群试试,现在的水平比较低,但是对js的感情着实是特殊的。

回复 引用 查看


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值