jQuery ready函数滥用分析


Posted in Javascript onFebruary 16, 2011

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

$(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吧。
Javascript 相关文章推荐
JavaScript去除空格的几种方法
Oct 03 Javascript
Ext grid 添加右击菜单
Nov 26 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
Jun 29 Javascript
使用documentElement正确取得当前可见区域的大小
Jul 25 Javascript
JS实现图片无间断滚动代码汇总
Jul 30 Javascript
jQuery提示插件alertify使用指南
Apr 21 Javascript
设置jQueryUI DatePicker默认语言为中文
Jun 04 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
Sep 15 Javascript
详解Angular2中的编程对象Observable
Sep 17 Javascript
微信小程序链接传参并跳转新页面
Nov 29 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
Dec 15 Javascript
js编写简易的计算器
Jul 29 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
Feb 14 #Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
Feb 14 #Javascript
JQuery 选择器、过滤器介绍
Feb 14 #Javascript
AJAX分页的代码(后台asp.net)
Feb 14 #Javascript
基于jquery的图片的切换(以数字的形式)
Feb 14 #Javascript
jquery isType() 类型判断代码
Feb 14 #Javascript
jquery isEmptyObject判断是否为空对象的函数
Feb 14 #Javascript
You might like
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
php英文单词统计器
2016/06/23 PHP
php的4种常用运行方式详解
2016/12/22 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
pandas分批读取大数据集教程
2020/06/06 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
实习推荐信
2014/05/10 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
Java Dubbo框架知识点梳理
2021/06/26 Java/Android