`

jQuery学习---基础篇

阅读更多

近期,因项目需要学习了一下jQuery,很久没有碰JS的东西了,原本以为会上手困难,结果仅仅看了jQuery网站上的文档,就能上手。入门已经有jQuery中文入门了。这里主要整理一下jQuery的API特点,便于对其API有个整体印象。

 


个人感觉:

  1. css、xpath,甚至正则表达式的selector让人一看即明。
  2. 在dom和数组操作上的包装和方便的解包操作,几乎无害化的扩展和简化了js代码,write less ,do more。
  3. 简单、一致的api让人领略什么叫融汇贯通、越用越爽,真是大道至简。

 

这里就谈谈jQuery的一些使用心得:

概念:

  • jq = 本文jQuery的缩写
  • $(...) = jq对象,jq对象是个数组,即使对应一个原始对象也是。另外jq对象没有"NullPointerException",调用没有匹配任何DOM元素的jq对象没有任何影响,省却了很多“?”号三元操作符,但调试上会些许麻烦。
  • selector = 选择器/筛选器,匹配一个或多个对象,所以jq对象上操作会影响到选择器匹配的所有对象。 
  • 裁剪   = 匹配的多个对象也许你要用到其中一个,可以用.eq(i)裁剪到此对象进行操作(裁剪回来的仍然是jq对象)。
  • 原始对象 = jq包装过后的对象不能直接使用原始对象的方法和属性,需要还原成原始对象,调用$(..).get()或者$(..).get(0)或者$(..)[0](用什么方式自己喜欢即可,初学者一般喜欢用get(0),我也是个初学者,或者是写惯Java的缘故.....).假如$(...)匹配多个对象,[0]则返回第一个,而 $(..).get()返回值是数组,即是只有一个对象,$(..).get(i)返回第i个,返回的对象不能直接使用jq方法,要使用的话要用$(原始对象)再包装.
  • get/set = jq没有get/set写法,一种方法一个参数就是get,两个参数(前名后值)就是set。 get操作通常只针对jq所匹配的第一个元素,而set操作则针对jq匹配的所有元素。
  • 事件触发和事件绑定 = jq没有onclick这类写法,对于一个事件 如click,不带参数的事件方法就是触发事件 如click() ,而带有事件处理函数参数的,则是绑定事件,如click(function(e){.....})。
  • 回调 = jq的代码的主要使用方式就是回调,遍历、事件等操作大多数都是回调完成的。回调方法里的this引用通常都是指向当前处理的对象或者数组元素,这点很重要,用好了才能体会jq所带来的好处。
  • “链式操作” = jq的很多方法返回值是个jq对象,所以可以继续用jq方法进行操作,看起来就像个链条一样,需要注意的是返回的jq对象和之前的jq对象有可能所代表的元素集合是不一样的,这点要做到心里有数。
  • queue =  队列,即当前jq对象正在执行的系列函数或动作,通常只有在长时间(如效果和动画)的动作或者前后依赖的动作中用到,因为瞬间完成的方法,你根本没下手机会。

API概览:

  • Core:

jq的核心方法,包括jq对象的创建($(对象or Selector)),遍历操作($(..).each),裁剪($(..).eq(i),i 为0~length-1).数据绑定和获取(data方法),队列(queue方法),插件($.fn.extend /$.extend),兼容其他js框架(.noConflict,几个js框架都用到了"美元",可以用此方法"卸载"$,那jq只能使用jQuery(...)全称替代美元符号)。

  • Selectors:

DOM选择器,以多种方式匹配过滤一个或多个html元素,可以说jq的精华之一。 结合css,xpath,正则表达式等筛选"语法"的优点。

实用性原则:能快速定位特定元素集,命中所需filter不超过3个。

常用的几个匹配方式:

  1. #id  匹配单个ID 对象,如有多个只匹配第一个,特点:精确,但是不能太多,ID多记忆麻烦哦。 
     例子:$("#id1"),获得匹配第一个id1的对象匹配。
  2. element 元素名匹配,匹配同类HTML元素,特点:匹配范围广,通常和属性筛选(Attribute Filter)结合使用,能用两个filter精确命中。
    例子$("div")匹配所有DIV元素。$("div[name='message']")匹配所有name为message的div
  3. .class 样式匹配,特点:在样式变化中经常会用到,经常结合each操作使用,缺点:难用度和样式多寡正相关。 
    例子$(".class1")配备样式class为class1的所有元素。
  4. 位置筛选 我自己给此类的统称,便于记忆。基本上是按元素的位置来匹配选取一群元素。
          以下两个实用价值较大,通过DIV和SPAN结合可以用来控制input和按钮:

     

                ancestor descendant  "父"下面的所有"子"(不管第几层)
                注意此处ancestor descendant 表示的是父子过滤器,而不仅仅是HTML元素。

     

                parent > child "父"下面的直接"子"元素(只匹配直接子类)
                parent 和child也是过滤器。

     

                下面的例子较好理解。

                

    <script language="javascript">
      $(document).ready(function(e){
    	alert($("#buttons :button").length);
    	alert($("#buttons > :button").length);
      }
    </script>
    <body>
    <div id="buttons">
    	<button>button1</button>
    	<input type="button" value="button2" />
    	<div id="childLayer">
    		<button>button3</button>
    	</div>
    </div>
    </body>

     

           另外两个实用性较小: 
                 prev + next 紧跟(前个匹配的每个元素后面紧跟的元素) 
                 prev ~ siblings 紧随(前个匹配的每个元素后面紧随的一串元素,直到父元素结束)

  5. 内容筛选(Content Filter):匹配范围太广,筛选性太弱,实用性不大。
  6. 可视性筛选(Visibility Filter):在样式变换中较为有用。
  7. 属性筛选(Attribute Filter):重要的筛选器,通常结合其他筛选器精确定位元素和元素集合,可以支持自定义属性 例如$("div[group='g1']"),匹配西面的所有带有group="g1"的div:
    <div group="g1">
    </div>
    <div group="g2">
    </div>
    <div group="g1">
    </div>
    <div group="g2">
    </div>
    类型:

    [attribute] 具有属性attribute
    [attribute=value] 属性值等于value
    [attribute!=value] 属性值不等于value
    [attribute^=value] 属性值以value开头(来源于正则表达式)比较有用,可以定义一组前缀可以统一管理。
    [attribute$=value] 属性值以value结尾(来源于正则表达式)
    [attribute*=value] 属性值包含value,无论开头结尾还是中间
    [attributeFilter1][attributeFilter2][attributeFilterN] 多重属性过滤,and关系型
     
     
    注:jq1.2之前的版本需要在属性前加个"@"
  8. 表单元素筛选(Forms Filter):用得较多一类筛选器,jq的文档写得很清楚,不累述了。可以和其他selector配合使用。例如:$(":radio[name='r1']:checked").val()会获得选中的r1 radio button的值。
  9. 基础筛选和子元素筛选:重要性较低的筛选,一般较难用上,但复杂的控制又必不可少,鸡肋。。。
    通常和其他selector结合使用较有用的:
    :even 匹配index是偶数的,如0,2,4。在行间间隔色相当好用。
    :odd 匹配index是奇数的,如1,3,5
    :first 匹配前一个selector匹配的第一个元素,返回的是单个元素
    :last 类似:first,只不过是最后一个。
    :first-child 和:first类似,不过返回的是一群元素的第一个子元素,$("div span:first-child"),所有div的第一个子元素,如果是span则匹配,否则不匹配。
    :last-child 同上,不过是最后的子元素。
    :not(selector)  匹配不符合条件的,比较宽泛,结合使用。

    再谈selector之间的关系:

    selector需要配合使用才能发挥最佳效能,所以有必要了解一下selector之间的关系。

    selector1,selector2,.....,selectorN    此处selector 之间是or关系型的,即是匹配每个selector所筛选的元素。

    selector1 selector2    此处ancestor descendant匹配,and关系型的一种,带有隐含关系"父"下面的所有"子" (不管第几层),其他几个位置筛选的类型类似。

    selector1[attributeFilter1][attributeFilter2]   此处selector和attribute fiter之间的关系是平行的and关系。注意的是selector之间不能有空格,否则变成ancestor descendant
  • Attributes:

设置或批量设置、以及获取 属性、class、HTML(innerHTML)、Text(相当于IE的innerText)、value属性

  • Events:

绑定或批量绑定、解除绑定、触发事件,可以设定只触发一次的事件(one方法)。绑定事件是累加方式所以重新绑定之前需要解除绑定。事件支持名称空间,相同名称空间的一种事件可以一起被操作而不影响其他名称空间的同一种事件,例如:

click.dosomething和click.doothers,解除dosomething名称空间的绑定,不影响到doothers的事件,click可以同时触发两个名称空间的click事件,因为都是click事件。 事件打算在另外的篇幅展开讨论,此处仅仅介绍。

 

注意:对于checkbox和radio的onclick事件,浏览器是先设置checked属性再运行onclick的代码,而jq绑定的click事件假如是由jq的click方法而不是点击鼠标触发的话,会先运行jq绑定的click事件代码再设置checked属性。这一点太诡异了。。。应该算个bug

<SCRIPT LANGUAGE="JavaScript">

$(function(){
	$(":checkbox").click(function(e){
		alert(this.checked);
	});
})

function toggleCheckBox(){
	//document.all("chk1").click();//换过来注释就知道区别
	$(":checkbox").click();
}

 </SCRIPT>



<body>
<input type="checkbox" checked id="chk1"/>
<button onclick="toggleCheckBox();">toggle</button>

</body>

 http://dev.jquery.com/ticket/3827

  • Utilities:

 工具类,常用的是数组的操作(合并,排除,转换,去除重复,indexOf等)、字符串去空格、序列化form或者Object以便ajax发送、对象的扩展。可以参照jq的文档,不会很难,不累述了。

  • Traversing:

 主要是selector匹配的元素集合中再进行查找、过滤、裁剪,在DOM树中前后左右上下范围内的对象进行操作。是selector的延伸方法。不会很难,jq中文入门很多例子,不累述了。

  • Manipulation:

对匹配的元素进行“内容管理”,类似于innerHTML的增删改,对节点的插入删除,并且增加了对特定节点的“包装”方法(在匹配的元素外面加多一层HTML)。不累述了。

  • CSS:

对CSS样式进行调整,获取位置坐标和长宽,移动滚动条,获取滚动条位置等。不累述了

  • Effects:

动画效果操作,配合使用可以做出很多个性化的效果。尚未怎么研究。不累述了

  • Ajax:

Ajax操作。打算在另外的篇幅展开。

  • jQuery UI

另外一个天地。研究过才有发言权。对于我,现在是零。

 

 

分享到:
评论
1 楼 yiminghe 2009-04-14  
你可以先理解一下 无侵入 的思想

相关推荐

    jquery-1.11.0+jquery-UI-1.10.4

    本篇将深入探讨jQuery 1.11.0与jQuery UI 1.10.4这两个版本的功能、特性以及它们在实际项目中的应用。 首先,jQuery 1.11.0是jQuery库的一个稳定版本,它在1.10.x的基础上进行了优化和修复,确保了更好的浏览器兼容...

    jquery 精品教程 -- Learning JQuery

    《Learning JQuery》是一本优秀的jQuery学习资料,无论是对于初学者还是有一定基础的开发者来说,都是一本值得推荐的好书。它不仅能够帮助读者快速掌握jQuery的核心知识,还能引导读者深入探索JavaScript的世界,...

    jquery-ui-1.8.13

    本篇文章将围绕“jquery-ui-1.8.13”这一特定版本,探讨其核心特性、使用方法以及如何通过源代码学习和应用。 1. **jQuery UI 的基本构成** jQuery UI 主要由以下几部分组成: - **Widgets(组件)**:如 Dialog...

    jquery-1.2.6-vsdoc

    本篇将聚焦于jQuery 1.2.6版本的VSDOC中文版,深入探讨其核心特性、函数以及在实际开发中的应用。 一、jQuery简介 jQuery是由John Resig在2006年创建的,它的目标是简化HTML文档遍历、事件处理、动画和Ajax交互。...

    jquery-easyui-1.3.2 demo

    本篇文章将详细探讨 "jquery-easyui-1.3.2 demo",即官方提供的示例,帮助读者理解并掌握这一强大工具的使用方法。 EasyUI 的核心在于其组件库,这些组件包括数据网格(datagrid)、下拉树(combotree)、日期选择...

    jquery-1.2-UnCompressed

    《jQuery 1.2 Uncompressed:深入理解与应用》 jQuery是JavaScript库的典范,以其简洁的API和强大的功能赢得了全球...虽然后续版本不断迭代,但jQuery 1.2仍然具有重要的学习价值,因为它奠定了现代jQuery的基础。

    jquery-ui-1.8.12

    在本篇中,我们将深入探讨jQuery UI 1.8.12这一特定版本的核心特性和应用。 首先,jQuery UI 1.8.12 包含了多种功能组件,如对话框(Dialog)、拖放(Draggable)、可排序(Sortable)、可堆叠(Stackable)和可...

    jquery-1.8.3.js 官方包

    本篇文章将详细探讨“jquery-1.8.3.js”官方包,这个版本在jQuery的发展历程中占有重要地位。 一、jQuery简介 jQuery是由John Resig于2006年创建的一个开源项目,它的核心理念是“Write Less, Do More”。jQuery...

    JQuery教程-从零开始学习jQuery

    ### JQuery教程:从零开始学习JQuery #### 开天辟地入门篇 ##### 摘要 本篇文章作为系列教程的开端,旨在为初学...通过本系列文章的学习,相信你能够熟练掌握JQuery的核心技术,为进一步的前端开发打下坚实的基础。

    jQuery教程学习

    **第一章:基础篇 - 对象的获取** 1. **jQuery速成 - 向jQuery进军!** 这一节主要介绍了jQuery的基本概念和重要性,鼓励初学者积极学习并掌握jQuery,以提升自身的编程技能。 2. **jQuery速成 - 核心!** 这部分...

    JQuery移动层---简单型

    这个例子可能包括了页面结构、导航和组件的使用,是学习和理解 jQuery Mobile 基础功能的好起点。 总的来说,jQuery Mobile 提供了一个强大的框架,让开发者能够快速地构建功能齐全的移动 Web 应用。通过熟练掌握其...

    jquery-1.3.1-vsdoc.rar

    本篇文章将深入探讨jQuery 1.3.1版本,特别是其VSDOC特性,这对于在Visual Studio中开发时的智能提示和代码辅助至关重要。 一、jQuery库的基本概念 jQuery的核心理念是“写得更少,做得更多”。它通过提供简洁的...

    最全前端面试题-5(jquery篇-上百篇题集整理1个月)

    【jQuery与Zepto的区别】 jQuery和Zepto都是广泛使用的JavaScript库,主要针对DOM操作和事件处理。它们在很多方面有着相似的功能,但也存在一些不同...通过深入学习这些内容,开发者可以提升在前端项目中的实践能力。

    jQueryMobile - DateBox插件(模式篇)

    《jQuery Mobile - DateBox 插件(模式篇)》 jQuery Mobile 是一款强大的移动Web开发框架,它使得在智能手机和平板设备上构建交互式的、触摸优化的网页应用变得容易。DateBox 是一个针对jQuery Mobile的扩展插件,...

    jQuery.mobile-1.0.1.js与jQuery.mobile-1.0.1.min.js

    本篇将深入探讨jQuery Mobile 1.0.1版本,包括其核心组件`jquery.mobile-1.0.1.js`和压缩版`jquery.mobile-1.0.1.min.js`,以及配套的样式文件`jquery.mobile-1.0.1.css`和压缩版`jquery.mobile-1.0.1.min.css`。...

    jQuery入门---快速的,简洁的javaScript库

    学习jQuery,首先应理解其基础API,然后通过实际项目进行实践,逐渐掌握其精髓。《jQuery中文入门指南》是一本不错的参考资料,涵盖了从基础到高级的各种主题,对于初学者来说,是快速掌握jQuery的捷径。 总结,...

    jquery学习笔记--1

    **jQuery学习笔记--1** jQuery是一个轻量级的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画设计以及Ajax交互。本篇笔记将深入探讨jQuery的基础知识,包括其核心概念、选择器、DOM操作、事件...

    jquery-2.0.3.js 、jquery-2.0.3.min.js 【官方jquery包 js】

    本篇将深入探讨官方发布的jQuery 2.0.3版本,以及其对前端开发的重要性。 jQuery,一个由John Resig于2006年创建的JavaScript库,极大地简化了DOM操作、事件处理、动画制作和Ajax交互。它的出现,使得JavaScript...

    jquery-mobile-player.zip

    本篇文章将围绕“jquery-mobile-player.zip”这个压缩包中的内容,深入探讨如何利用jQuery Mobile和HTML5技术创建一个功能丰富的移动播放器。 首先,jQuery Mobile 是一个专为触摸设备设计的前端框架,它基于jQuery...

    jquery 1.7---1.11 chm文档

    本篇文章将详细解析从jQuery 1.7到1.11各版本的API文档,深入探讨其核心功能和变化,为开发者提供全面的参考。 一、jQuery基础 jQuery的核心是选择器,它借鉴了CSS的语法,使得选取DOM元素变得极其简单。例如,`$...

Global site tag (gtag.js) - Google Analytics