jquery load方法把一个页面载入到主页面的一个div中,载入页面的javascript消失了
如果绑定给window对象,则会在所有内容加载后触发,包括窗口,框架,对象和图像。如果绑定在元素上,则当元素的内容加载完毕后触发。
注意:只有当在这个元素完全加载完之前绑定load的处理函数,才会在他加载完后触发。如果之后再绑定就永远不会触发了。所以不要在$(document).ready()里绑定load事件,因为jQuery会在所有DOM加载完成后再绑定load事件。
调用load方法的完整格式是:load( url, [data], [callback] ),
其中:
url
:是指要导入文件的地址。
data
:可选参数;因为Load不仅仅可以导入静态的html文件,还可以导入动态脚本,例如PHP文件,所以要导入的是动态文件时,我们可以把要传递的参数放在这里。-
callback
:可选参数;是指调用load方法并得到服务器响应后,再执行的另外一个函数。
1、index.html里面有两个div,一个是id是menu,另一个是work,代码如下
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="index.js"></script>
</head>
<body>
<div id="menu">
<input type="button" id="btnMenu" value="menu1">
</div>
<div id="work"> </div>
</body>
</html>
2、在index.js中对btnMenu绑定事件
$(document).ready(function(){
$("#btn1").click(function () {
$("#work").load("load.html");
});
});
3、被载入的页面load.html只包含一个按钮,代码如下:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="load.js"></script>
</head>
<body>
<input type="button" id="btn" value="menu1">
</body>
</html>
4、在load.js中对btn绑定事件
$(document).ready(function(){
$("#btn").click(function () {
alert("btn1");
});
});
5、测试结果是,在IE6和firefox中都可以正常载入load.html,但firefox中点击load.html的按钮不会执行alert("btn1"),IE6可以。
6、问题是怎么样才能使firefox中也能执行btn的点击事件。好像所有在load.js里的代码都失效了。谢谢大家!
问题补充:
把index.js和load.js合并成一个,2个页面共同调用
//
1、把index.js和load.js合并成一个,也必须在载入load.html后重新绑定事件才行。
2、如果要重新绑定,为了方便必须使用非匿名的function,管理这些非匿名function也是一个头大的问题,特别是当应用比较大的时候。
3、如果想针对load.html单独测试,就是不用index.html进行load直接测试load.html就没有办法了,因为load.html并不包含javascript(如果包含了IE会执行两次事件).