jQuery是如何工作的

开发 前端
最近发现jQuery很成熟了,我看了jQuery官方的document,这里先提供入门章节内容。主要介绍jQuery是如何工作的。

我最近在做一个项目,需要用到ajax,我以前做ajax项目,已经有很多年了,jQuery还不成熟,需要自己编写大量的Javascript代码。

最近发现jQuery很成熟了,我看了jQuery官方的document,这里先提供入门章节内容。

专题:jQuery从入门到精通

对jQuery的简要介绍和一些需要了解的如何使用jQuery的概念

这段主要教授你如何开始使用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.     </script>
  12.  </body> 
  13. </html> 

编辑Script标签的src属性,指向你的jQuery.js属性。例如,如果你的jQuery.js和HTML文件在同一文件夹下:

  1. <script src="jquery.js"></script> 

页面加载完成时运行代码

很多Javascript程序员都要做的第一件事情,就是加这样的一些代码到他们的程序:

  1. window.onload = function(){ alert("welcome"); } 

这段代码将会在页面加载成功时被正确执行,但是,这段代码的问题是Javascript代码将会在所有的图片信息被全部下载完成后执行(这里包含了广告栏)。这里使用首先Window.onload的原因是HTML在你最初运行这段代码的时候,HTML文档并没有完全加载。

To circumvent both problems, jQuery has a simple statement that checks the document and waits until it's ready to be manipulated, known as the ready event:

jQuery有一个很简单的声明来检查文档,和判断文档是否已经准备完成,这里称之为 ready event:

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

我们在ready event中添加一个超链接点击的处理方法。

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

保存HTML文件,在浏览器中刷新此文件,点击网页中的超链接,在连接到指定页面之前首先会弹出一个提示框。

在点击和其他的很多事件中,你可以在这里使用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文件的示例来演示之前我们讲述的内容。注意这里连接到了Google’s CDN 来加载jQuery的核心库。你最好将它放在一个单独文件中,并且在Head标签中完成对它的加载。

  1. <!DOCTYPE html> 
  2.  <html lang="en"> 
  3.  <head> 
  4.    <meta charset="utf-8"> 
  5.    <title>jQuery demo</title> 
  6.  </head> 
  7.  <body> 
  8.    <a href="http://jquery.com/">jQuery</a> 
  9.    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
  10.    <script> 
  11.      $(document).ready(function(){  
  12.        $("a").click(function(event){  
  13.          alert("As you can see, the link no longer took you to jquery.com");  
  14.          event.preventDefault();  
  15.        });  
  16.      });  
  17.    </script> 
  18.  </body> 
  19.  </html> 

增加和删除css样式

重要: 接下来的jQuery示例需要放在ready event内,这样在文档准备结束后立即执行。

我们另一种常常做的事情,便是增加(或者删除)一个css样式。

首先我们在<head>标签内增加一些样式:

  1. <style>  
  2.     a.test { font-weight: bold; }  
  3.  </style> 

然后在代码内使用addClass方法

  1. $("a").addClass("test"); 

所有超链接会被加粗。

要删除此样式,只需要使用 remove class方法。 (允许添加多个样式到html)

  1. $("a").removeClass("test"); 

特效

jQuery提供了一组特效,使用这些特效可以让你的网站脱颖而出,你只需要将上面的测试文件添加如下代码就可以进行测试:

  1. $("a").click(function(event){  
  2.    event.preventDefault();  
  3.    $(this).hide("slow");  
  4.  }); 

如果你点击超链接,你所点击的超级链接会被隐藏。

回调函数

回调函数是指父方法运行通过后传递参数并且进行调用的函数。回调函数的特殊之处在父函数可以在回调函数运行之前运行。另一个重要的点是要知道如何正确的传递回调。这也是我常常忘记的正确语法。

无参数回调

你可以使用下面的代码来设定回调参数。

  1. $.get('myhtmlpage.html', myCallBack); 

注意 第二个参数只包含回调函数的名字(不是字符串并且不包含括号对). Javascript的函数可以像参数一样传递,并且在后面的代码执行。

包含参数的回调

你可能会这样问,"如果包含参数,你会怎么做?"。

错误的方式

错误的调用方式(不会被执行)

  1. $.get('myhtmlpage.html', myCallBack(param1, param2)); 

这种方式并不会被调用,因为它调用了

  1. myCallBack(param1, param2) 

它的执行结果会被作为第二个参数传递给$get()函数

正确的方式

上面的方式问题在于 myCallBack在作为函数传递之前先被进行了评估。Javascrip和的jQuery 将函数扩展为函数指针,例如IE的设定Timeout函数。

下面的方法,创建了一个匿名函数并且注册了回调函数。注意这里使用了function(){}匿名函数只做了一件事情,使用两个参数param1,param2调用myCallBack方法。

  1. $.get('myhtmlpage.html'function(){  
  2.  myCallBack(param1, param2);  
  3. }); 

param1和param2是$get()方法获取页面完成后提供的参数。

原文:http://www.cnblogs.com/daitou0322/archive/2011/08/07/2130138.html

【编辑推荐】

  1. jQuery性能优化
  2. jQuery设计思想
  3. 7月20款最新且极具创意的jQuery插件(附下载)
  4. jQuery实现仿百度搜索时的下拉列表
  5. 教你开发一款极为简单实用的jQuery图表插件
责任编辑:陈贻新 来源: KangPeng的博客
相关推荐

2021-05-10 17:20:55

AIOps开发人员人工智能

2023-04-18 14:53:48

2021-08-03 14:29:30

ARPANET互联网协议TCP

2023-04-18 15:09:50

2010-08-02 16:56:03

ICMP协议

2024-09-06 17:55:27

Springboot开发

2023-03-06 00:27:02

Kubernetesscheduler系统

2023-11-24 17:20:41

无人机无人驾驶飞行器

2021-02-26 14:40:16

Kubernetes调度器

2023-03-21 10:20:20

2022-02-11 10:27:28

面部识别算法人工智能

2022-08-12 07:00:00

NFC安全性RFID

2020-09-11 08:41:50

域名系统DNS网络

2024-08-19 00:25:00

2024-02-22 08:00:00

SoraOpenAI

2022-05-18 08:00:00

JavaScriptFetch数据

2022-08-08 08:00:00

人工智能机器学习计算机应用

2017-11-17 09:13:31

Java注解

2022-09-16 00:11:45

PyTorch神经网络存储

2023-05-17 15:36:57

点赞
收藏

51CTO技术栈公众号