原文地址:http://learn.jquery.com/about-jquery/how-jquery-works/

linkjQuery: 基础知识

这是一个基本的教程,旨在帮助您开始使用jQuery,如果你还没有设置一个测试页面,通过创建下面的HTML页面开始: 
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>Demo</title>
  6. </head>
  7. <body>
  8. <a href="http://jquery.com/">jQuery</a>
  9. <script src="jquery.js"></script>
  10. <script>
  11. // Your code goes here.
  12. </script>
  13. </body>
  14. </html>

<script>元素的src属性必须指向jQuery的副本。从jQuery的下载页面下载jQuery的副本然后将jquery.js文件和你的HTML文件存储在同一目录下。

 

文档就绪后启动代码

为了确保他们的代码在浏览器加载文档完成后运行,许多JavaScript程序员将他们的代码放在onload函数中: 
  1. window.onload = function() {
  2. alert( "welcome" );
  3. }

然而,直到所有图像(包括横幅广告)都加载完毕,代码才会运行。为了文件一准备好就开始操作代码,jQuery有一个声明被称为ready事件(Ready Event):

  1. $( document ).ready(function() {
  2. // Your code here.
  3. });

例如在ready事件(Ready Event)中,你可以添加一个单击处理程序的链接:

  1. $( document ).ready(function() {
  2. $( "a" ).click(function( event ) {
  3. alert( "Thanks for visiting!" );
  4. });
  5. });

保存你的HTML文件,然后在浏览器中重新加载测试页面。点击链接应该先出现一个警示弹出窗口,然后继续按照默认行为导航到 http://jquery.com。

对于点击和大多数其他事件,您可以通过在事件处理程序中调用event.preventDefault()来阻止默认行为: 
  1. $( document ).ready(function() {
  2. $( "a" ).click(function( event ) {
  3. alert( "As you can see, the link no longer took you to jquery.com" );
  4. event.preventDefault();
  5. });
  6. });

完整例子

下面的例子说明了上面讨论的点击处理的代码,直接嵌入在HTML<BODY>。需要注意的是在实践中,通常将你的代码放在单独的JS文件中并且加载到页面上<script>元素的src属性中。
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>Demo</title>
  6. </head>
  7. <body>
  8. <a href="http://jquery.com/">jQuery</a>
  9. <script src="jquery.js"></script>
  10. <script>
  11. $( document ).ready(function() {
  12. $( "a" ).click(function( event ) {
  13. alert( "The link will no longer take you to jquery.com" );
  14. event.preventDefault();
  15. });
  16. });
  17. </script>
  18. </body>
  19. </html>

添加和删除一个HTML类

重要提示:您必须将剩下的jQuery的例子放在ready事件里面,这样当文档准备工作时你的代码会执行。
另一个常见任务是添加和删除一个类。
首先,在文档的<head>标签中添加一些样式信息,像这样:
  1. <style>
  2. a.test {
  3. font-weight: bold;
  4. }
  5. </style>

下一步,在脚本中添加 .addClass()声明: 

  1. <span style="font-size:10px;">$( "a" ).addClass( "test" );</span>

现在所有的<a>都是粗体的。

删掉现有的类,用.removeClass()
  1. <span style="font-size:10px;">$( "a" ).removeClass( "test" );</span>

特殊效果

jQuery也提供一些提供方便的效果,以帮助您使您的网站中脱颖而出。例如,如果您创建一个click处理函数:

  1. <span style="font-family: 'Helvetica Neue', HelveticaNeue, Helvetica, Arial, sans-serif; background-color: rgb(255, 255, 255);"></span><pre code_snippet_id="220643" snippet_file_name="blog_20140306_10_1835179" name="code" class="javascript" style="color: rgb(51, 51, 51); line-height: 22.5px;">$( "a" ).click(function( event ) {
  2. event.preventDefault();
  3. $( this ).hide( "slow" );
  4. });</pre>
  5. <pre></pre>
  6. <pre></pre>
  7. <pre></pre>

当点击的时候这个链接缓慢的消失。


回调函数

与其他编程语言不同,JavaScript能让你的函数顺利通过在之后执行。一个回调是一个函数,它作为一个参数来传递给另一个函数,在它的父函数执行完成后执行该回调函数。
回调函数很特殊因为他们需要耐心等待直到他们的父函数执行完成。与此同时,浏览器可以执行其他函数或者做其他工作。
使用回调函数,很重要的一点是知道他们怎么传给他们的父函数的。
 

无参数回调

如果回调没有参数,你可以这样传: 
  1. $.get( "myhtmlpage.html", myCallBack );

当 $.get() 调用myhtmlpage.html,它会执行myCallBack()函数。

   注意:这里的第二和参数是一个简单的函数名(但不是作为字符串,没有括号)

有参数回调

执行带参数的回调函数可能会很棘手。

错误的: 
  1. $.get( "myhtmlpage.html", myCallBack( param1, param2 ) );

这段函数不会执行。

失败的原因是代码会立即执行myCallBack(参数1,参数2),然后将myCallBack()的返回值作为第二个参数传给为$.get()方法。我们实际上想传送函数myCallBack()而不是myCallBack(参数1,参数2)的返回值(这可能是也可能不是一个函数)。因此,如何传送myCallBack()包括它的参数?
正确的:
推迟执行myCallBack()与它的参数,你可以使用一个匿名函数来包装。注意,这里使用的function(){。匿名函数只做了一件事情:调用myCallBack(),用参数1和参数2的值。 
  1. $.get( "myhtmlpage.html", function() {
  2. myCallBack( param1, param2 );
  3. });

当$.get()方法完成获取网页myhtmlpage.html,它会执行匿名函数,这个匿名函数会执行myCallBack(参数1,参数2)。

jQuery 的运行机制(How jQuery Works)的更多相关文章

  1. jQuery 插件运行机制和 $冲突解决

    1.jQuery.fn.extend(object) 基本插件假设我们要创建一个插件,使一组元素中的文本变为绿色.我们要做的就是添加一个名为greenify的函数, $.fn 将像其他任何jquery ...

  2. jQuery的内部运行机制和原理

    jQuery的优点: jQuery是一个非常优秀的JavaScript库,与Prototype,YUI,Mootools等众多的Js类库相比,它剑走偏锋,从Web开发实用的角度出发,抛除了其它Lib中 ...

  3. jquery.validate 验证机制

    jquery.validate 验证机制 金刚 juqery juqery.validate 在开发系统时,使用了jquery.validate.js 这个验证插件,来校验数据合法性 重点 验证是以i ...

  4. 深入理解jQuery的Event机制

    jQuery的Event模块非常强大.其功能远远比原生事件监听器强大许多,对同一个元素的监听只用一个eventListener,内部则是一个强大的观察者,根据匹配事件类型触发相应回调.jQuery不仅 ...

  5. 使用反射机制实现jQuery调用ashx类中的指定方法

    使用反射机制实现jQuery调用ashx类中的指定方法   近期用asp.net做个小网站,但又不喜欢使用asp.net的服务器端控件,经过一番思量后确定前端采用原始的html.后台采用Linq to ...

  6. jquery 使用整理机制

    短路表达式 与 多重短路表达式 短路表达式这个应该人所皆知了.在 jQuery 中,大量的使用了短路表达式与多重短路表达式. 短路表达式:作为"&&"和" ...

  7. jQuery的事件机制和其他知识

    jQuery 设置宽度和高度 宽度操作: $(selector).height(); //不带参数表示获取高度 $(selector).height(200); //带参数表示设置高度   宽度操作: ...

  8. jquery的插件机制

    jQuery的内核; (function( window, undefined ) { //这就是jQuery的原型 var jQuery = function( selector, context ...

  9. 深入理解JavaScript运行机制

    深入理解JavaScript运行机制 前言 本文是写作在给团队新人培训之际,所以其实本文的受众是对JavaScript的运行机制不了解或了解起来有困难的小伙伴.也就是说,其实真正的原理和本文阐述的并不 ...

随机推荐

  1. 机器学习算法整理(二)梯度下降求解逻辑回归 python实现

    逻辑回归(Logistic regression) 以下均为自己看视频做的笔记,自用,侵删! 还参考了:http://www.ai-start.com/ml2014/ 用梯度下降求解逻辑回归 Logi ...

  2. Centos7一键编译安装zabbix-4.0.2

    ##只针对centos7的系统有效,centos6无效,mysql zabbix用户:zabbix,密码:zabbix;建议用全新的centos7服务器 软件版本: (nginx-1.14.2.php ...

  3. async-lock模块理解

    在Appium1.7.1里集成了一个同步模块async-lock用来支持多会话功能. 只能说就算是以单线程高并发闻名的I/O密集型Nodejs也不得不扩展额外的同步块方法,或者说,在现有的计算机体系结 ...

  4. 《设计模式》-原则三:依赖倒置原则(DIP)

    这几天晚上回来都去玩了!没有坚持学习.真的好惭愧! 非常自责 后面一定要坚持 一气呵成  争取每天学一点,把这个学完. 今天主要是看了一下  设计模式中的 原则三: 依赖倒置原则(DIP) 官方是这样 ...

  5. div+css+jQuery简单实现投票功能

    昨天看到C#群里有人问一个投票功能如何实现... 我对此很感兴趣,为了练习一下,就有了以下代码. 投票功能使用jQuery实现..纯html代码...数据通过json字符串传递,通过 eval转换为j ...

  6. 动态引用外部的Javascript脚本文件[转]

    你可以参考下面方法,进行动态为网页引用外部的Javascript脚本文件.代码写在Page_Init方法内. VB.NET: 下图是运行时,查看HTML的源代码: C#:

  7. 详细讲解安全升级MySQL的方法

    MySQL升级是非常必要的. 我们在Percona Support上列出了关于MySQL升级最佳实践的各种问题.这篇文章推荐了一些不同情况下升级MySQL的方法. 为什么MySQL升级是必须的? 原因 ...

  8. HDU 4500 小Q系列故事——屌丝的逆袭

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4500 解题报告:简单题,数据范围不大,直接暴力每个点,然后再比较出得分最大的点的位置和分数. #inc ...

  9. Nginx配置location及rewrite规则

    Nginx配置location及rewrite规则 示例: location  = / {   # 精确匹配 / ,主机名后面不能带任何字符串   [ configuration A ] } loca ...

  10. php魔术函数 __clone()

    原文地址: http://www.nowamagic.net/librarys/posts/php/32 PHP4面向对象功能一个很大的缺点,是将对象视为另一种数据类型,这使得很多常见的OOP方法无法 ...