欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

jQuery.holdReady(hold)的使用方法实例详解

程序员文章站 2024-01-12 09:00:04
...
暂停或恢复.ready() 事件的执行。

在$.holdReady()方法允许调用者延迟jQuery的ready事件。这种先进的功能,通常是使用动态脚本加载器,要加载的JavaScript比如 jQuery插件,如额外的ready事件才让事件发生,即使在DOM可能准备。此方法必须早在文件调用,在这样<head> jQuery脚本后,立即标记。ready事件之后调用此方法即使已经发射也将没有任何效果。

要延迟ready事件,第一次调用的$.holdReady(true)。当ready事件应该执行时,调用$.holdReady(false) 。请注意,多个holds可以放在ready事件上,每个$.holdReady(true)逐一调用。ready事件将不会执行,直到所有已发布了相应的一个$.holdReady(false) 和正常的文件准备好条件得到满足。

jQuery.holdReady(hold) 返回值类型boolean

jquery.holdReady()方法允许jQuery的完成事件被该函数锁定。
这个高级特性的典型应用场合是动态载入脚本,比如jQuery插件等。
在附加的脚本载入完成前,即使页面已经准备好,jQuery的完成事件也不会被触发。
这个函数必须在页面的靠前部分被调用,比如在标签当中,jQuery载入下一行。
在完成事件被触发后调用此函数没有任何效果。
使用方法:首先调用.holdReady(true)[调用后完成事件将被锁定]。当准备好触发完成事件时,调用.holdReady(false)。需要注意的是,
可以对完成事件添加多个锁定,每个锁定对应一次$.holdReady(false)[解锁]调用。
jQuery的完成事件将在所有的锁定都被解除,并且页面也已经准备好的情况下被触发。
实际上就是为一些需要依赖动态脚本的代码加的一个安全锁,
当所需要的动态脚本加载完毕后再执行就绪事件,而不是在DOM树构建成功后执行。

实例代码:

实例一:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="" />
<title>php.cn</title>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
jQuery.holdReady(true);
$(document).ready(function(){
  alert("我不会被弹出");
})
</script>
</head>
<body>
  
</body>
</html>

在以上代码中,由于添加了 jQuery.holdReady(true),所以尽管文档加载完成,也不会执行ready()中的函数。

实例二:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="" />
<title>php.cn</title>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
</head>
<body>
<button id="first">点击测试弹出</button>
<button id="second">解除延迟</button>
<script type="text/javascript">
jQuery.holdReady(true) 
$(document).ready(function(){
  $("#first").click(function(){
    alert("我不会被弹出");
  })
})
$("#second").click(function(){
  jQuery.holdReady(false);
})
</script>
</body>
</html>

当点击解除延迟之后,就可以弹出了。

再来看看小例子

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="../js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="index.js"></script>
<title>Insert title here</title></head>
<body>
<input type="button" id="btn" value="呵呵">
</body>
</html>

然后有两个js文件

首先加载的是index.js

$.holdReady(true);//将holdReady改为ture,点击按钮就没有任何效果,改为false就可以是用来里面的js事件$(function(){
    $('#btn').click(function(){
        alert(123);
    });

});

下面写了两个js文件 index.js和hold.js

jsp中只加载index.js,在index.js里决定是否加载hold.js
代码如下:

//hold.js$(function(){
    alert('这是使用holdReady加载出来的');
}); 

//index.jsjQuery.holdReady(true)
$.getScript("hold.js", function() {
    jQuery.holdReady(false);
});

加载hold.js的时候调用一个回调函数,将true改为false,这样就可以加载hold.js文件

以上就是 jQuery.holdReady(hold)的使用方法实例详解的详细内容,更多请关注其它相关文章!