读jQuery官方文档:$(document).ready()与避免冲突
$(document).ready()
通常你想在DOM结构加载完毕之后才执行相关脚本。使用原生JavaScript,你可能调用window.onload = function() { ... }, 但是这个办法的你只能够调用一次,而且需要等DOM结构完全加载完毕,包括图片样式等静态文件所有夹在完毕才会开始执行onload函数里面的代码。
jQuery中提供了一种更好的办法:
$(document).ready(function() {
console.log('ready!');
});
与onload函数不同的是,这个办法可以被调用无限多次,而且不需要等待页面元素完全下载完毕才执行代码,即DOM结构渲染完毕后马上执行代码。
你可能见过一些经验丰富的开发者使用下面的简写形式:
$(function() {
console.log('ready!');
});
除了传递匿名函数,你也可以选择传递命名函数:
function readyFn(jQuery) {
//do something...
}
$(document).ready(readyFn);
//或者:
$(window).load(readyFn);
避免与其他库冲突
1、No-Conflict模式
jQuery库是被包含在jQuery
全局变量中的,而$
是jQuery
的快捷方式,也就是$
默认也是全局变量。如果你在使用其他包含$
全局变量的库(如prototype,YUI),你可能面临变量名冲突,不过jQuery提供了避免这种冲突的办法。
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
var $j = jQuery.noConflict();
//现在$不再是jQuery的别名,$j替换了$成为了jQuery的新别名
$j(document).ready(function() {
$j('div').hide();
});
//现在$是prototype的别名
window.onload = function() {
var mainDiv = $('main');
};
</script>
上面的代码中的$
会回复到它本身的库的用途。你依然可以通过jQuery
或者$j
的方式使用jQuery库。你可以随意更改jQuery
的别名, 比如`jq', '$J', 'awesomeQuery'等。
另外,如果你不想给jQuery
命名新的别名(你依然想要用$
),你依然有办法可以避免冲突。
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
jQuery.noConflict();
jQuery( document ).ready(function( $ ) {
//这个作用域里的$都是jQuery的别名
$('div').hide();
});
//全局作用域的$是prototype的
window.onload = function() {
var mainDiv = $('main');
};
</script>
这些技巧基本上可以完成日常需求了。
2、 引入其他库之前引入jQuery
在其他库前引入jQuery,你需要使用jQuery来调用jQuery库,$别称属于其他库。
<script src="jquery.js"></script>
<script src="prototype.js"></script>
//通过jQuery全称调用jQuery库
jQuery(document).ready(function() {
jQuery('div').hide();
});
//由于prototype在jQuery之后引入,$别名属于prototype
window.onload = function() {
var mainDiv = $('main');
};
3、 总结
创建新别名:
jQuery.noConflict()
方法做了两件事,一是返回了jQuery对象的引用,你可以用来赋值给自定义的变量,如($jq);二是,删除了默认的$
别称,把$
别名归还给其他库:
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
//将$别名归还prototype,创建一个新的别名$jq
var $jq = jQuery.noConflict();
</script>
使用立即调用函数表达式:
你可以创建一个立即调用函数表达式,然后在表达式里使用$作为jQuery的别名:
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
jQuery.noConflict();
(function( $ ) {
$('div').remove();
})( jQuery );
</script>
注意,如果你使用这个技巧,你将不能够在立即调用函数表达式里面使用$
作为prototype的别名。
给jQuery(document).ready()传递参数:
<script src="jquery.js"></script>
<script src="prototype.js"></script>
<script>
jQuery(document).ready(function( $ ) {
//do something...
});
</script>
或者
<script src="jquery.js"></script>
<script src="prototype.js"></script>
<script>
jQuery(function( $ ) {
//do something...
});
</script>
读jQuery官方文档:$(document).ready()与避免冲突的更多相关文章
- 读jQuery官方文档:jQuery对象
jQuery对象 当用$符号包裹一个CSS风格选择器的时候,你得到一个jQuery对象. var heading = $('h1'); jQuery对象是对DOM ELement封装过后的数组.注意, ...
- 读jQuery官方文档:数据方法与辅助方法
数据方法 有时候你可能想要在元素上面储存数据.由于浏览器兼容性问题,用原生JavaScript处理元素上的数据可能会造成内存溢出,jQuery可以帮你自动处理这些问题: //储存和取出元素数据 $(' ...
- 读jQuery官方文档:样式
样式 使用jQuery,无论是设置或者获取元素样式都十分简便. // 支持驼峰式和分割线式,两种方式等价(原生JavaScript只支持驼峰式) $('h1').css('fontSize'); $( ...
- 读jQuery官方文档:遍历
遍历 jQuery的快捷遍历方法可以快速定位到想要的元素.查找祖先元素 html<div class="grandparent"> <div class=&quo ...
- [转]Commons IO 官方文档
原文地址:http://ifeve.com/commons-io/ 本文翻译自 Commons IO 官方文档 译者:MagicWolf Common IO 是一个工具库,用来帮助开发IO功能 它包括 ...
- js进阶 10-3 jquery中为什么用document.ready方法
js进阶 10-3 jquery中为什么用document.ready方法 一.总结 一句话总结: 1.document.ready和window.onload的区别:用哪个好? document. ...
- jQuery 函数位于一个 document ready 函数中
在我们的实例中的所有 jQuery 函数位于一个 document ready 函数中: $(document).ready(function(){ --- jQuery functions go h ...
- 转:jquery的$(function(){})和$(document).ready(function(){}) 的区别
原文链接:https://www.cnblogs.com/slyzly/articles/7809935.html [转载]jquery的$(function(){})和$(document).rea ...
- JVM - Java虚拟机规范官方文档
Java虚拟机规范官方文档
随机推荐
- NOIP2004 津津的储蓄计划
一.津津的储蓄计划 (Save.pas/dpr/c/cpp). [问题描述] 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. ...
- Magento 重新安装的方法
如果之前已经成功安装Magento, 不必再下载Magento进行重新安装,很多朋友删掉所有程序文件然后再上传一个magento程序包进行重新安 装, 这样做很耗时间. 其实只需把magento的根目 ...
- 【翻译】Android避免内存泄露(Activity的context 与Context.getApplicationContext)
原谅地址:http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html ,英文原文在翻译之后 Android 应用 ...
- mssql函数demo
ALTER FUNCTION [dbo].[f_GetCookType] (@saleDate datetime)RETURNS varchar(6)ASBEGIN declare @cookType ...
- 浅谈iOS中MVVM的架构设计与团队协作
说到架构设计和团队协作,这个对App的开发还是比较重要的.即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...
- 在CentOS 6.2上安装 MemcacheQ 最新版
1. 安装 yum install gcc cc make libevent libevent-devel 2. 安装Berkeley DB 下载:http://www.oracl ...
- 也谈SSO,一个简单实用的单点登录Demo
关于SSO(单点登录),百度百科解释如下 : “SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要 ...
- CSS层叠样式选择器归纳
常用选择器 1.1 类型选择器:用来寻找特定类型的元素 标签 { 声明 } p { color:black; } h1 { font-weight:bold; } 1.2 后代选择器: 选择一个元 ...
- 按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n!);
package com.homework2; public class ClassA implements InterfaceA { @Override public int method(int n ...
- ECSHOP在线手册布局参考图--商品详情页 goods.dwt
A.购物车 1,设置方法 程序自动读取购物车的商品数量 2,代码相关 cart.lbi 中 {insert_scripts files='transport.js'} <div clas ...