这两天在看jQuery源码回调对象模块,因为jQuery.ready()是基于此来实现的,所以也回顾了一下ready函数。然后一直想不明白一个问题, 在bindReady()函数中
readyList = jQuery.Callbacks( "once memory" );
创建了一个带有'once memory'标志的回调对象,在回调对象中,once是表示只能fire一次,memory是有记忆功能,也就是说后面添加的回调函数会立即触发,并且是上一次fire时所调用的参数。但是在ready事件中,页面DOM加载完成才会触发ready,而DOM加载只会出现一次,也就是说 ready函数不会触发第二次,也自然不会fire两次,所以觉得once是没有必要的呀?希望了解的 回应一下,真的比较困惑。
readyList = jQuery.Callbacks( "once memory" );
创建了一个带有'once memory'标志的回调对象,在回调对象中,once是表示只能fire一次,memory是有记忆功能,也就是说后面添加的回调函数会立即触发,并且是上一次fire时所调用的参数。但是在ready事件中,页面DOM加载完成才会触发ready,而DOM加载只会出现一次,也就是说 ready函数不会触发第二次,也自然不会fire两次,所以觉得once是没有必要的呀?希望了解的 回应一下,真的比较困惑。
解决方案 »
- IE6\7下的margin问题
- Iframe嵌入mht文档后图片无法显示
- 请教aspx.cs的变量怎么在aspx中的javascript使用
- 求一正则表达式,取出某HTML中的有用部分成一个数组。
- <select>列表里面怎么选择的是那条数据数据?
- 文本框获取下拉框的值以后,怎么改变啊,请教
- 一个java获取网页标题传递参数中“#”引起的问题!请高手赐教!在线等!
- 如何在Yahoo上登记主页
- 怎样在button的click事件中在服务器端执行一段javascript?
- 如何让easyui的validatebox初始化的时候不验证
- 用户登录输入密码进行MD5加密,页面上怎么去实现啊
- JS如何实现Li循环切换颜色
// Mozilla, Opera and webkit nightlies currently support this event
if ( document.addEventListener ) {
// Use the handy event callback
document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); // A fallback to window.onload, that will always work
window.addEventListener( "load", jQuery.ready, false ); // If IE event model is used
} else if ( document.attachEvent ) {
// ensure firing before onload,
// maybe late but safe also for iframes
document.attachEvent( "onreadystatechange", DOMContentLoaded ); // A fallback to window.onload, that will always work
window.attachEvent( "onload", jQuery.ready ); ……
}
因为考虑到浏览器的兼容性,它绑定了DOMContentLoaded/onreadystatechange和load/onload 两个事件;
因为是配合着高云 jQuery技术内幕来看的,所以就拿jQuery1.7.2版本来分析的