一般而言,js代码都放在页面的底部。在做项目的过程中,发现放在底部的代码没有执行,原来操作的是ajax生成的部分。这时候,页面加载js的顺序就要小心了。例子如下:
无标题文档
Ajax没有完成,这时候,页面元素还不完整,操作ajax生成部分的代码其实已经执行了,而jquery没有选中页面元素又不会报错,参见:http://www.cnblogs.com/xiaochongchong/p/5497343.html 。
解决方法:把底部的代码封装成一个函数,然后等待ajax请求成功,页面生成完整后。后调用这个函数。对上面例子的稍加修改:
无标题文档
总结:js操作ajax生成的部分。操作的代码,应该放页面生成之后。
如果要对ajax生成的部分添加事件。除了上面的做法:在ajax数据获取到,append到整个页面中之后再添加。除此之外,还可以用事件代理的方法实现,原生js的可以实现,jquery也可以实现。
Jquery事件代理(委托)主要用到两个方法:live(),delegate()。详细说明参考