@
soulteary 感谢回复,我也只是就自己看到的问题吐槽而已,因为jquery提供了很方便的东西,所以造成很多人开发的时候不会思考问题。
Q1:
当然,有些条件下是需要重新获取元素。
我这里说的是指这样的:
<div id="abc"></div>
$('#abc').bind('click',function(){
$('#abc').html('')
$('#abc').xxx
$('#abc').xxx
$('#abc').xxx
})
还有这样的
for(var i = 0, i < xxx ; i ++){
$('#abc').xxxx
}
这是让我吐槽的地方,当然如果写原生的也会试这样,跟开发人员水平有关。
那么我之所以说 jquery 给一些开发人员乱搞的机会,那么看Q2
Q2:
满篇都是$.
再举我上面的例子
div#abc
p.pic
p.pic
p.pic
直接上来就是$('.pic'),试问,这样真的保险?
如果是原生js,会让人那么容易取到?谁能保证其它开发人员不会改class 不会增加 相同的class?
所以我说,如果要用那么也最好 $('#abc .pic'),这样最起码后面改代码的人知道你获取的是哪些节点。这样你大规模的换代码以这个区域就会失效,否则一直$('.xxx')难免会出错。
我自己观点还是以id会钩子比较好。
Q3:
不说一些模块化配置这么高深的。因为方便,我看到很多人直接
$('xxxx').append('<div>......</div>')
append进一大堆东西进去。
一个最简单的问题,当要换append里面的模板会不会造成要大量改js的时候?
可以写一些简单的封装函数,可惜我这里情况并没有。。
有些公司 html js 是分开的。。如果每次更新模板都要找相关的js人员,岂不是太痛苦?
还是那点,如果是原生js。不会这么方便的 append,最起码你会一个个create,看到大量代码或许你会想到封装起来。
当然,你也可能偷懒,直接 innerHTML('xxxx')
但是,又有问题来了。你如果在有事件不会空得元素后面直接innerHTML 会导致事件失效。。这是不是又是一个可以触发开发人员想办法解决的点?
所以我才会有以上吐槽。