提取jQuery的ready方法
2010-06-07 16:05
537 查看
这次的onDOMReady更有吸引力了
先说明一下,为什么要提取jQuery的ready方法?
因为在很多时候大家做前端时,需要在DOM树载入时马上执行一些函数,比如对导航条进行初始化。
但又不愿意仅为了这一个需求而引入整个jQuery库,于是就把jQuery的ready方法提取出来,单独使用了。
另外你也可以在构建自己的js框架时使用此函数。
重复一遍,我们的口号是什么?
彪悍的应用,没有一行代码是多余的!!!
ready-from-jQuery
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>提取自jQuery的ready方法</title>
<script type="text/javascript">
(function () {
var isReady = false; //判断onDOMReady方法是否已经被执行过
var readyList = []; //把需要执行的方法先暂存在这个数组里
var timer; //定时器句柄
ready = function (fn) {
if (isReady)
fn.call(document);
else
readyList.push(function () { return fn.call(this); });
return this;
}
var onDOMReady = function () {
for (var i = 0; i < readyList.length; i++) {
readyList[i].apply(document);
}
readyList = null;
}
var bindReady = function (evt) {
if (isReady) return;
isReady = true;
onDOMReady.call(window);
if (document.removeEventListener) {
document.removeEventListener("DOMContentLoaded", bindReady, false);
} else if (document.attachEvent) {
document.detachEvent("onreadystatechange", bindReady);
if (window == window.top) {
clearInterval(timer);
timer = null;
}
}
};
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", bindReady, false);
} else if (document.attachEvent) {
document.attachEvent("onreadystatechange", function () {
if ((/loaded|complete/).test(document.readyState))
bindReady();
});
if (window == window.top) {
timer = setInterval(function () {
try {
isReady || document.documentElement.doScroll('left'); //在IE下用能否执行doScroll判断dom是否加载完毕
} catch (e) {
return;
}
bindReady();
}, 5);
}
}
})();
//使用方法
ready(navInit); //navInit为已存在的函数
//或
ready(function () {
navInit();
});
function navInit() {
document.getElementById("info").innerHTML = "document.getElementById(“info”).innerHTML = ok";
}
</script>
</head>
<body>
<div id="info"></div>
</body>
</html>
先说明一下,为什么要提取jQuery的ready方法?
因为在很多时候大家做前端时,需要在DOM树载入时马上执行一些函数,比如对导航条进行初始化。
但又不愿意仅为了这一个需求而引入整个jQuery库,于是就把jQuery的ready方法提取出来,单独使用了。
另外你也可以在构建自己的js框架时使用此函数。
重复一遍,我们的口号是什么?
彪悍的应用,没有一行代码是多余的!!!
ready-from-jQuery
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>提取自jQuery的ready方法</title>
<script type="text/javascript">
(function () {
var isReady = false; //判断onDOMReady方法是否已经被执行过
var readyList = []; //把需要执行的方法先暂存在这个数组里
var timer; //定时器句柄
ready = function (fn) {
if (isReady)
fn.call(document);
else
readyList.push(function () { return fn.call(this); });
return this;
}
var onDOMReady = function () {
for (var i = 0; i < readyList.length; i++) {
readyList[i].apply(document);
}
readyList = null;
}
var bindReady = function (evt) {
if (isReady) return;
isReady = true;
onDOMReady.call(window);
if (document.removeEventListener) {
document.removeEventListener("DOMContentLoaded", bindReady, false);
} else if (document.attachEvent) {
document.detachEvent("onreadystatechange", bindReady);
if (window == window.top) {
clearInterval(timer);
timer = null;
}
}
};
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", bindReady, false);
} else if (document.attachEvent) {
document.attachEvent("onreadystatechange", function () {
if ((/loaded|complete/).test(document.readyState))
bindReady();
});
if (window == window.top) {
timer = setInterval(function () {
try {
isReady || document.documentElement.doScroll('left'); //在IE下用能否执行doScroll判断dom是否加载完毕
} catch (e) {
return;
}
bindReady();
}, 5);
}
}
})();
//使用方法
ready(navInit); //navInit为已存在的函数
//或
ready(function () {
navInit();
});
function navInit() {
document.getElementById("info").innerHTML = "document.getElementById(“info”).innerHTML = ok";
}
</script>
</head>
<body>
<div id="info"></div>
</body>
</html>
相关文章推荐
- 提取jquery的ready()方法单独使用示例
- 提取JQuery的ready()方法来单独使用
- 怎样提取jQuery.ready(),DOM加载完毕执行onDOMReady()方法
- 提取jquery的ready()方法单独使用示例
- jquery $(document).ready() 方法的作用
- 生JS实现jQuery的ready方法呢?下面是其中之一的做法:
- 【JS】如何用原生JS实现jQuery的ready方法
- jQuery(document).ready(function($) { });的几种表示方法
- javascript知识点之onload和jquery方法ready()的区别
- JQuery-- onload,ready方法详细解说
- JQuery onload、ready概念介绍及使用方法
- jquery事件的ready()方法使用详解
- jquery中的$(document).ready()方法和window.onload方法区别
- jQuery中事件加载 DOM—@ready中调用其他方法,会提示缺少对象的错误
- 原生js实现jQuery的ready方法
- JavaScript的jQuery库中ready方法的学习教程
- 锋利的jQuery-4--$(document).ready()和window.onload方法的区别
- Jquery的Ready方法加载为什么两次?
- jquery的ready(fn)方法