站ajax加载,异步的页面有js,应该如何让它执行。

JavaScript013

站ajax加载,异步的页面有js,应该如何让它执行。,第1张

1. 采用附加一个iframe的方法去执行js,为我等代码洁癖者所不齿。

2. 使用document.write输出代码,我等简洁主义者所不愿。

3. 最简单的方法是把js放到需要调用的父页面,那想这样的公用页面,每个地方调用都要写入一次,代码冗余。

4. eval是个解决方法,虽然低效。

5. 复杂的解决方法:正则匹配出加载页面中的所有js,为这些js创建同样多个<script>标签,把js内容插入即可执行。但使用中发现,firefox可行,但IE还是不从。(师太,您就从了吧~)

我习惯用jquery,所以只能给你个jquery里的问题解决办法

因为ajax请求回来的对象都是后期加入的,而html只在加载时候执行一次,所以需要在执行事件的父级上去加绑定事件

如:

$('body').on('click' , '.zan' , function(){

//do something ...

})

$('body')范围比较大,但只要保证除了要实现效果的地方以外没有.zan这个类的元素就可以,当然也可以缩小范围;

.on就是事件的绑定方法,根据jquery版本不同会有点变化;

click是事件触发动作,你的应该就是点击;

.zan是触发的元素,这里表示class为zan的元素,可以根据你自己需要改动

以上办法供你参考

原因在你为$("#xx")添加click事件处理程序时,$("#xx")还没有加载到页面中,所以会丢失绑定,可以绑定到祖先元素,live表示密切监视浏览器,当被点击元素与选择元素匹配的时候,才执行处理程序。

如果你的jquery版本是1.9以前的

$("#xx").live('click',

function(){

...

})

1.9以后的

$(document).on('click',

"#xx",

function(){

...

})