当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JQuery 引发两次$(document.ready)事件

Javascript
[原创]javascript 定时广告显示(两个时间段)
jquery ui dialog里调用datepicker的问题
ext 代码生成器
javascript 局部页面打印实现代码
Javascript 继承实现例子
Javascript 继承机制的实现
Javascript 继承机制实例
Javascript 作用域使用说明
Javascript Math对象
Javascript Global对象
什么是JavaScript
img标签中onerror用法
使用JQuery和s3captche实现一个水果名字的验证
JavaScript写的一个DIV 弹出网页对话框
IE8 下的Js错误HTML Parsing Error...
jQuery ui 1.7更新小结
javascript 多级checkbox选择效果
google地图的路线实现代码
Javascript 访问样式表实现代码
JS 控制CSS样式表

Javascript 中的 JQuery 引发两次$(document.ready)事件


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-20   浏览: 439 ::
收藏到网摘: n/a

ASP.net MVC 做了个工程,不知道为什么Search按就总是执行两次。 页面大概是这样的,一个Partial View,而这个View包含了一小段绑定Search的Javascript,并且用Jquery-ui 的dialog 包含,而且确定不是ASP.net mvc生成HTML的问题,HTML是依照我的想法生成的,后来实在没有办法,把dialog的代码去掉,Search按就正常了。查了一下dialog的代码,发现 是appendTo引发的。
做了实验,代码如下:
代码
复制代码 代码如下:

<script type="text/javascript">
$(document).ready(function() {
$("#a1").appendTo($("#a2"));
});
</script>
<div id="a1">
<script type="text/javascript">
alert('a1');
</script>
</div>
<div id="a2">
</div>

预计 alert('a1') 应该执行一次的,但是由于使用了appendTo,执行了两次,无论你在 a1 div里面是否使用$(document).ready,都会运行两次javascript,第一次document 加载完成,第二次是调用 appendTo.
首先改为下面这种方式,失败。
代码
复制代码 代码如下:

<div id="a1">
<script type="text/javascript">
loaded = false;
if (loaded == false) {
alert('a1');
loaded = true;
}
</script>
</div>

再改成下面这种,就可以成功了。
复制代码 代码如下:

var loaded = false;
$(document).ready(function() {
if (!loaded) {
alert('a1');
loaded = true;
}
});