热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小白读《锋利的jQuery(第2版)》学习笔记第一章

第一章认识jQueryJavaScript和JavaScript库JavaScript:Netscape(网景)公司开发的一种脚本语言

第一章 认识jQuery


Javascript和Javascript库

Javascript:Netscape(网景)公司开发的一种脚本语言。

Javascript自身存在3个弊端:

  1. 复杂的文档对象模型(DOM)
  2. 不一致的浏览器实现
  3. 缺乏便捷的开发、调试工具

Ajax:一种新型的基于Javascript的Web技术。
(Asynchronous Javascript And XML,异步的Javascript和XML)

Javascript程序库:封装了很多预定义的对象和实用函数,简化Javascript的开发。

几种流行的Javascript程序库:

Prototype:最早成型的Javascript库之一,对Javascript的内置对象(例如String对象、Array对象等)做了大量的扩展。使用者可以在需要的时候随时将其中的几段代码抽出来放进自己的脚本里。
不足:从整体上对面向对象的编程思想把握得不是很到位,导致了其结构的松散。

Dojo:提供了很多其他Javascript库没有提供的功能。(例如离线存储的API,生成图标的组件、基于SVG/VML的矢量图形库和Comet支持等。
不足:学习曲线陡,文档不齐全,最严重的就是API不稳定,每次升级都可能导致已有的程序失效。

YUI:由Yahoo公司开发的一套完备的、扩展性良好的富交互网页程序工具集。
文档完备、代码规范。

Ext JS:简称Ext,原本是对YUI的一个拓展,主要用于创建前端用户界面。
不足:侧重于界面,本身比较臃肿。并非完全免费。

MooTools:一套轻量、简洁、模块化和面向对象的Javascript框架。

jQuery:轻量级的库,拥有强大的选择器、出色的DOM操作、可靠的事件处理、完善的兼容性和链式操作等功能。

jQuery已经逐渐从其他Javascript库中脱颖而出,成为Web开发人员的最佳选择。

加入jQuery

创建者:John Resig
创建时间:2006年1月
项目类型:开源项目
jQuery团队:核心库、UI、插件和jQuery Mobile等开发人员以及推广和网站设计、维护人员。
理念:写得少,做得多(write less, do more)
优势:

  1. 轻量级:采用UglifyJS压缩后,大小保持在30KB左右。
  2. 强大的选择器。CSS1到CSS3几乎所有的选择器;jQuery独创的高级而复杂的选择器;插件使其支持XPath选择器;开发者编写属于自己的选择器。
  3. 出色的DOM操作的封装。
  4. 可靠的事件处理机制。采用Dean Edwards编写的事件处理函数的精华。在预留退路(graceful degradation)、循序渐进以及非入侵式(Unobtrusive)编程思想不错。
  5. 完善的Ajax。所有的Ajax操作封装到一个函数$.ajax()里。
  6. 不污染顶级变量。jQuery只建立一个名为jQuery的对象,其所有的函数方法都在这个对象之下。
  7. 出色的浏览器兼容性。
  8. 链式操作方式。最有特色的地方。对发生在同一个jQuery对象上的一组动作,可以直接连写而无需重复获取对象。
  9. 隐式迭代。jQuery里的方法都被设计成自动操作对象的集合,而不是单独的对象。
  10. 行为层与结构层的分离。直接给元素添加事件。
  11. 丰富的插件支持
  12. 完善的文档
  13. 开源

jQuery代码的编写

下载地址:http:/jquery.com/
库类型:
jquery.js(开发版): 约229KB ; 完整无压缩版本,主要用于测试、学习和开发。
jquery.min.js(生产版): 约31KB ; 经过工具压缩或经过服务器开启Gzip压缩,主要应用于产品和项目。

无需安装,只需在页面html文件中引入该库文件的位置即可。







$与jQuery等价:


在这里插入图片描述
window.onload:
必须等待网页中所有的内容加载完毕后(包括图片)才能执行。
不能同时编写多个。若有多个,取最后那个执行。
无简化写法。

$(document).ready():
网页中所有DOM结构绘制完毕后就执行,可能DOM元素关联的东西并没有加载完。
能同时编写多个,多个都会执行。
$(document).ready(function(){
······
});
可以简写为:
$(function(){
······
});

jQuery代码风格

一个导航栏的HTML代码:








需求:单击不同的商品名称链接,显示相应的内容,同时高亮显示当前选择的商品。

jQuery代码:


jQuery规范格式:

  1. 对于同一个对象不超过3个操作的,可以直接写一行。
  2. 对于同一个对象的较多操作,建议每行写一个操作。
  3. 对于多个对象的少量操作,可以每个对象写一行,如果涉及子元素,可以考虑适当地缩进。

由于jQuery有时候很复杂的问题用一行选择器就可以轻松解决。所以最后写上必要的注释。

jQuery对象和DOM对象

DOM(Document Object Model,文档对象模型),每一份DOM都可以表示成一棵树。
(Javascript已经学过,不赘诉。)
可以通过getElementsByTagName或者getElementById来获取元素节点。

jQuery对象:通过jQuery包装DOM对象后产生的对象。jQuery对象是jQuery独有的。

在jQuery对象中无法使用DOM对象的任何方法。DOM对象也不能使用jQuery里的方法。

jQuery对象和DOM对象的相互转换

如果获取的是jQuery对象,那么在变量前面加上$。

var $variable = jQuery对象

如果获取的是DOM对象,不加$

var variable = DOM对象

jQuery对象转成DOM对象

jQuery提供了两种方法将一个jQuery对象转换成DOM对象,即[index]和get(index)。

(1)jQuery对象是一个类似数组的对象——[index]

var $cr = $("#cr"); //jQuery对象
var cr = $cr[0]; //DOM对象
alert(cr.checked) //检测这个checkbox是否被选中了

(2)jQuery本身提供的,提供get(index)方法得到相应的DOM对象。

var $cr = $("#cr"); //jQuery对象
var cr = $cr.get(0); //DOM对象
alert(cr.checked) //检测这个checkbox是否被选中了

DOM对象转成jQuery对象

对于一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。
方式为$(DOM对象)

var cr = document.getElementById("cr"); //DOM对象
var $cr = $(cr); //jQuery对象

一个实例

采用DOM方式:


用户注册(基本信息)
用户名
验证码   点击获取验证码
性别
论坛密码
请再输入一遍密码
E-mail
请回答注册问题:1+1=?
你的回答是:
为避免机器注册请提交
您的时区和时间
高级选项显示高级用户设置选项


在这里插入图片描述
jQuery方式:



解决jQuery和其他库的冲突

在jQuery库中,几乎所有插件都被限制在它的命名空间里。通常,全局对象都被很好地存储在jQuery命名空间里,因此当把jQuery和其他Javascript库一起使用时,不会引起冲突。

  1. jQuery库在其他库之后导入:
    在其他库和jQuery库都被加载完毕后,可以在任何时候调用jQuery.onConflict()函数来将变量$的控制权移交给其他Javascript库。












Test-prototype(将被隐藏)


Test-jQuery(将被绑定单击事件)




自定义一个快捷方式






Test-prototype(将被隐藏)


Test-jQuery(将被绑定单击事件)





jQuery开发工具和插件


  1. Dreamweaver:建立Web站点和应用程序的专业工具。
  2. Aptana:一个功能强大、开源和专注于Javascript的Ajax开发IDE。(占内存多)
  3. jQueryWTP和Spket插件:Eclipse支持jQuery自动提示代码功能。
  4. Visual Studio 2008
  5. 其他工具:EditPlus、EmEditor和VIM等等。

推荐阅读
  • CSS3 @font-face 字体应用技术解析与实践
    在Web前端开发中,HTML教程和CSS3的结合使得网页设计更加多样化。长期以来,Web设计师受限于“web-safe”字体的选择。然而,CSS3中的`@font-face`规则允许从服务器端加载自定义字体,极大地丰富了网页的视觉效果。通过这一技术,设计师可以自由选择和使用各种字体,提升用户体验和页面美观度。本文将深入解析`@font-face`的实现原理,并提供实际应用案例,帮助开发者更好地掌握这一强大工具。 ... [详细]
  • 作为一名CSS初学者,我在博客园中尝试通过CSS美化页面,特别是为超链接添加图标,以提升阅读体验。本文将分享如何使用CSS和字体图标库来实现这一功能。 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • 在Vite项目优化过程中,通过使用rollup-plugin-visualizer插件,可以有效地对Rollup打包结果进行可视化分析,帮助开发者清晰地了解各个模块的占用情况,从而进行更有针对性的优化。此外,结合其他常用插件,如vite-plugin-compression和vite-plugin-inspect,可以进一步提升项目的性能和可维护性。 ... [详细]
  • 利用Selenium框架解决SSO单点登录接口无法返回Token的问题
    针对接口自动化测试中遇到的SSO单点登录系统不支持通过API接口返回Token的问题,本文提供了一种解决方案,即通过UI自动化工具Selenium模拟用户登录过程,从浏览器的localStorage或sessionStorage中提取Token。 ... [详细]
  • 本文详细介绍了利用JavaScript实现的五种不同的网页弹出窗口技术,包括全屏窗口、全屏模式窗口、带收藏链接工具栏的窗口、网页对话框及HTA窗口。 ... [详细]
  • PyQt5 QTextEdit:深入解析Python中多功能GUI库的应用与实现
    本文详细探讨了 PyQt5 中 QTextEdit 组件在 Python 多功能 GUI 库中的应用与实现。PyQt5 是 Qt 框架的 Python 绑定,提供了超过 620 个类和 6000 个函数及方法,广泛应用于跨平台应用程序开发。QTextEdit 作为其中的重要组件,支持丰富的文本编辑功能,如富文本格式、文本高亮和自定义样式等。PyQt5 的流行性不仅在于其强大的功能,还在于其易用性和灵活性,使其成为开发复杂用户界面的理想选择。 ... [详细]
  • 本文探讨了在使用 ClickOnce 部署方式时遇到的自动更新失败问题,包括本地安装与服务器安装的不同表现,并提供了详细的解决方案。 ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • CSS模块化命名 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 本文介绍了一种使用CSS3和jQuery实现的35款SVG图标加载动画。这些动画不仅视觉效果出色,还能提升用户体验。通过本文,您可以了解如何在项目中应用这些动画。 ... [详细]
  • 深入解析:React与Webpack配置进阶指南(第二部分)
    在本篇进阶指南的第二部分中,我们将继续探讨 React 与 Webpack 的高级配置技巧。通过实际案例,我们将展示如何使用 React 和 Webpack 构建一个简单的 Todo 应用程序,具体包括 `TodoApp.js` 文件中的代码实现,如导入 React 和自定义组件 `TodoList`。此外,我们还将深入讲解 Webpack 配置文件的优化方法,以提升开发效率和应用性能。 ... [详细]
  • 深入RTOS实践,面对原子操作提问竟感困惑
    在实时操作系统(RTOS)的实践中,尽管已经积累了丰富的经验,但在面对原子操作的具体问题时,仍感到困惑。本文将深入探讨RTOS中的原子操作机制,分析其在多任务环境下的重要性和实现方式,并结合实际案例解析常见的问题及解决方案,帮助读者更好地理解和应用这一关键技术。 ... [详细]
author-avatar
手机用户2502917141
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有