jQuery ready函数滥用分析_jquery

查看下之前写的代码,有许多这样的代码:

复制代码 代码如下:

$(function(){
//do something.
});

这里面可能写一些初始化样式、给其他dom元素附加事件处理等。刚开始没发现什么问题,但是在页面引用了一些下载缓慢的图片时,问题出现了:在页面html下载完,到所有资源全部下载完之间,绑定dom元素上绑定的事件无法执行、用脚本绑定的样式无效等混乱情况,也就是ready么有执行。

Ok,我的情况比较特殊,可能这个情况对于大部分同学是不可能遇到的,但是在开发中我们不得不考虑在某种比较糟糕的情况下,某个用户打开了你的网站,然后正好你的页面上有许多图片。。。那他只能等着了吧。。。

解决办法: 返璞归真
在ready出现之前我们的写法可能是这样的:

在文档中插入一段脚本块

复制代码 代码如下:

<span id="test1">hello world</span>
<script type="text/javascript">
alert(document.getElementById("test1").innerHTML);
</script>

这样的代码在浏览器加载到这里时就会执行。注意,如果在这里的DOM元素test1在script块后面,这里就会出现异常。

我只是需要在页面加载时候就执行这些代码,不需要页面所有资源都加载完,所以,没必要让我坐在这等着"缓慢"的ready吧。

嗯,思考一下,整理下html结构
页面中到处都是这个script块也不好,不利于阅读,那就把他们整理一块拉到文档结尾吧。

复制代码 代码如下:

<html>
<head>
//让这里就放一些title、meta、link之类的神马东西吧。
</head>
<body>
Body html…….
<script type="text/javascript">
alert("把你的代码从head拉到这里来吧。。。放心的操作文档,不用担心找不到元素,也不用window.onLoad、$.ready神马的了");
</body>
</html>

Ok,如果您确实需要等着资源文件下载完才能执行脚本,那您还是老老实实的用jQuery的ready吧。

时间: 2024-08-25 05:19:24

jQuery ready函数滥用分析_jquery的相关文章

jquery ready函数源代码研究_jquery

一般情况下都是设置body标签的onload监听window的load事件.但load事件是要在页面的元素全部加载完了才触发的,如果页面上图片较多或图片太大,就会导致初始化的代码未被执行的时候用户就做了其它操作了. Jquery库提供了一个非常方便好用的函数( $(selector).ready()),让我们可以在页面的dom加载完后就可以做相应的操作(当然,这还得看用户浏览器的支持).,而不用等待全部元素加载完成.例如: $(document).ready(function (){ alert

jquery ready函数深入分析_C 语言

最近看一些关于jquery ready 有人说他缓慢,有人说他快,说法不一. 于是自己深入研究一下.首先看了一下jquery 文档 关于ready 的描述 While JavaScript provides the load event for executing code when a page is rendered, this event does not get triggered until all assets such as images have been completely

jQuery构造函数init参数分析_jquery

在我的上一篇随笔里面分析了jQuery的构造函数,jQuery对象中有一个原型方法init才是是真正的构造函数,通过init的原型对象跟jQuery的原型对象保持引用关系使得init的实例可以正常调用jQuery的原型方法,就好像是jQuery的实例一样.下面就来看看init这个幕后的构造函数是怎么写的: init: function( selector, context, rootjQuery ) { ... } 可以看到这个方法接受3个参数,其前两个参数是jQuery方法传递过来的 var

用jQuery简化JavaScript开发分析_jquery

jQuery是我最近发现的一个新工具.jQuery开发团队形容jQuery是"一个快捷.简练的JavaScript库,它可以简化HTML文档检查.事件处理.动画执行.并给你的Web页面增加AJAX交互." jQuery初步 你可以免费下载jQuery的最新版本.它由一个明确定义的脚本文件构成,因此你可以随意研究它的源代码.下载JavaScript文件后,你就可以把它放在Web服务器中准备使用.你可以用HTML SCRIPT元素把jQuery库加载到任何Web页面中.src属性应利用文件

jQuery实用函数用法总结_jquery

本文以实例的形式总结了jQuery的常见实用函数.分享给大家供大家参考之用.具体示例如下: 1.修剪字符串 $('#id').val($.trim($('#someid').val()))   2.遍历集合 可能这样写: var anArray = ['one','two']; for(var n = 0; n < anArray.length; n++){ } 还有可能这样写: var anObject = {one: 1, two: 2}; for(var p in anObject){ }

一个超简单的jQuery回调函数例子(分享)_jquery

jQuery回调函数简单使用 比如说,我们想要点击某个按钮后触发事件, 先把一些指定内容给隐藏掉, 然后跳出相关信息的对话框. 如果使用普通的方法, 不用回调函数的话, 会有怎么样的效果呢? 效果是先弹出对话框再隐藏内容, 然后再隐藏指定内容. 这显然不是我们想要的效果, 如果使用回调函数,就可以解决这个问题. 当然,回调函数功能远不只这么简单-- 具体的代码如下: <%@ page language="java" import="java.util.*" p

jQuery 自定义函数写法分享_jquery

自定义主要通过两种方式实现$.extend({aa:function(){}});$.fn.extend({aa:function(){}});调用的方法分别是:$.aa();$($this).aa(); 注意:创建函数时不要放在 $(function() { }中,调用时候要放在事件里面$($this).click(function(){$.aa();}); jQuery.extend 函数详解JQuery的extend扩展方法:Jquery的扩展方法extend是我们在写插件的过程中常用的方

jquery队列函数用法实例_jquery

本文实例讲述了jquery队列函数用法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="jquery-1.9

jQuery 工具函数学习资料_jquery

URL 字符串操作 数组和对象操作 测试操作 浏览器 1:URL操作: $.param(obj) 返回 :string: 说明:将jquery对象按照name/value 或者key/value序列化为URL参数,用&连接. 示例: var obj ={name:zh,age:20}; alert(jQuery.param(obj)); //alert "name=zh&age=20";   2:字符串操作: jQuery.trim(str) 返回:string: 说明