Jquery选择符课件_第1页
Jquery选择符课件_第2页
Jquery选择符课件_第3页
Jquery选择符课件_第4页
Jquery选择符课件_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 jQuery选择符本章学习目标 了解jQuery选择符的运行原理 理解jQuery选择符的使用方法 掌握jQuery选择符的使用。简介jQuery 利用 CSS 和 XPath 选择器使我们在文档对象模型(DOM)中快速、容易地访问元素或者元素组1.1 文档对象模型jQuery 最强有力的方面是它能很容易进行 DOM 遍历。文档对象模型是以家族树排列。HTML,像其它的标记语言一样,使用这个模型来描述页面上的东西的关系。当我们参考这些关系,如父节点、子节点等等。一个简单的实例能帮助我们理解对应一个档的家族树的隐喻。the titleThis is a paragraph.This is

2、 another paragraph.This is yet another paragraph.这时在, 是一个所有其它元素的祖先,换 句话说,所 有其它元素都是 的子孙。 和 元素是 的孩子。因此,除了是 和 的祖先外, 还是他们的父亲。 元素是 的孩子(后代),也是 和 的后代,也是其它元素的兄弟。我们开始之前要注意的很重要的一点是从我们不同的选择器和方法中得到的元素其实就是jQuery 对象。jQuery 对象很容易与我们在页面找到的元素一起工作。我们也很容易绑定一个事件到对象,并加入一些效果,也可将多个修改和效果连接在一起。1.2 工厂函数$()无论我们想在 jQuery 中使用哪种

3、选择器类型(CSS, XPath 或者自定义),我们总会以美元符号和圆括($())号开始。在第一章提到,$() 函数不需要做for循环来访问一组元素,放在圆括号里面的东西都会自动的进行循环并作为 jQuery 对象存储。我们可把任何东西放到 $() 函数的圆括号里面。包含一些更变通的实例: 选择标记名:$(P)选择文档中所有的P元素。 选择元素Id:$(#some-id) 选择一个类:$(.some-class)接下来我们来讲一下jQuery的核心函数。1. jQuery(expression,context)这个函数接收一个包含 CSS 选择器的字符串,然后用这个字符串去匹配一组元素。 jQ

4、uery 的核心功能都是通过这个函数实现的。 jQuery中的一切都构建于这个函数之上,或者说都是在以某种方式使用这个函数。这个函数最基本的用法就是向它传递一个表达式(通常由 CSS 选择器组成),然后根据这个表达式来查找所有匹配的元素。默认情况下, 如果没有指定context参数,$()将在当前的 HTML 文档中查找 DOM 元素;如果指定了 context 参数,如一个 DOM 元素集或 jQuery 对象,那就会在这个 context 中查找。它的返回类型为:jQuery。参数expression(String):用来查找的字符串,context(Element,jQuery)(可选)

5、作为待查找的DOM元素集、文档或jQuery对象。2. jQuery(html)根据提供的原始 HTML 标记字符串,动态创建由 jQuery 对象包装的 DOM 元素。 你可以传递一个手写的 HTML 字符串,或者由某些模板引擎或插件创建的字符串,也可以是通过 AJAX 加载过来的字符串。但是在你创建 input 元素的时会有限制,可以参考第二个示例。当然这个字符串可以包含斜杠 (比如一个图像地址),还有反斜杠。当你创建单个元素时,请使用闭合标签或 XHTML 格式。例如,创建一个 span ,可以用 $() 或 $() ,但不推荐 $()它的返回类型为:jQuery;参数:html (St

6、ring) :用于动态创建DOM元素的HTML标记字符串示例:动态创建一个 div 元素(以及其中的所有内容),并将它追加到 body 元素中。在这个函数的内部,是通过临时创建一个元素,并将这个元素的 innerHTML 属性设置为给定的标记字符串,来实现标记到 DOM 元素转换的。所以,这个函数既有灵活性,也有局限性$(“Hello”).appendTo(“body”);创建一个 元素必须同时设定 type 属性。因为微软规定 元素的 type 只能写一次。/ 在 IE 中无效:$().attr(type, checkbox);/ 在 IE 中有效:$();3. jQuery(element

7、s)将一个或多个DOM元素转化为jQuery对象。这个函数也可以接收XML文档和Window对象(虽然它们不是DOM元素)作为有效的参数。返回类型为:jQuery;参数elements(Element,Array);用于封装成jQuery对象的DOM元素示例:设置页面背景色。$(document.body).css(“background”,”black”);隐藏一个表单中所有元素$(myForm.elements).hide()4. jQuery(callback)$(document).ready()的简写。允许你绑定一个在DOM文档载入完成后执行的函数。这个函数的作用如同$(docume

8、nt).ready()一样,只不过用这个函数时,需要把页面中所有需要在 DOM 加载完成时执行的$()操作符都包装到其中来。从技术上来说,这个函数是可链接的但真正以这种方式链接的情况并不多。你可以在一个页面中使用任意多个$(document).ready事件。返回类型为:jQuery,参数callback(Function)当DOM加载完成后要执行的函数示例:当DOM加载完成后,执行其中的函数。$(function()/Document is ready)使用 $(document).ready() 的简写,同时内部的 jQuery 代码依然使用 $ 作为别名,而不管全局的 $ 为何。jQue

9、ry(function($)/你可以在这里继续用$做为别名)1.3 CSS选择符jQuery 支持大部分的选择器,包括在World Wide Web Consortium网站上列出的(/Style/CSS/#specs) CSS规范1到3。这个支持允许开发者增强他们的网站,而不必担心有些浏览器(特别是 IE6 或者更低)可能不理解高级选择器,只有这些浏览器支持 JavaScript 就可以了。注意:可靠的jQuery开发者对他们的代码应该总是有逐步增强和功能降级的概念,即使页面在JavaScript 不可用时与 JavaScript 可用时不是一样漂亮,我们也会

10、让页面正确地渲染。为我开始学习jQuery与CSS选择器一起工作,我们使用了出现在许多网站的一个结构,就是导航,嵌套无序的列表(List)。代码:Java书籍Ajax开发Jsp开发Oracle开发thinkingJ书籍C#入门经典ASP.Net高级特性winform高级应用WEB客户端技术jQueryextJavascript注意每个有一个selected-plays ID,但 标签没有类,也没有任何的样式,这个列表看似像:这个嵌套的列表如我们期望的那样显示,一套竖式排列的子弹项目并且根据他们的等级进行缩进。 样式化列表项让我们假设我们想最高级的项目,仅仅是最高级的项目,被水平排

11、列,我们可在样式表中定义一个horizontal类来开始:.horizontalfloat:left;list-style:none;margin:10px;Horizontal 类将跟着它的元素向左浮动,删除列表项的子弹样式,并将它的所有面的边界都加入10个像素。为了说明 jQuery 的选择器的用法我们动态地添加它到列表的最高级项,只有 Comedies、Tragedies 和 Histories,而不是将 horizontal 类直接附加到我们的 HTML 中。$(document).ready(function() $(#selected-plays li).addClass(hori

12、zontal)第1章讨论过,我们使用 $(document).ready() 包住我们的 jQuery 代码,DOM 加载完毕后就可以使它所有东西都可用。第二行使用子结合器 () 来添加 horizontal 类到所有最高级的项。$ () 函数里的选择器意思是 find each list item (li) that is a child () of an element with an ID of selectedplays。(请同学们根据原文体会)这里,页面如下:我们再添加sublevel 类到这些项目中,他们得到灰黄色的背景,在样式表中定义:.sub_levelbackground-c

13、olor:yellow;可以用很多种不同的方法样式化所有其它不在最高级的项目。既然我们已经应用 horizontal类到最高级的项目,为了指定那些没有 horizontal 类的所有列表项,我们可使用negationpseudoclass(保留原意,否定伪类)方法获得所有子级的项目$(document).ready(function() $(#selectedplays li).addClass(horizontal)$(#selectedplaysli:not(.horizontal).addClass(sublevel)这时我们得到每个列表项:1. 是否 ID 为 selectedplay

14、s的元素的子孙2. 本身没有类 horizontal这时,我们看到嵌套的列表看起来是这样:我们来总结一下CSS选择器里的层级选择表达式: Ancestor descendant在给定的祖先元素下匹配所有的后代元素,返回值为Array,参数ancestor(Selector):任何有效选择器descendant (Selector) : 用以匹配元素的选择器,并且它是第一个选择器的后代元素示例:HTML代码: Name: Newsletter: jQuery代码:$(“form input”)结果:, Parentchild在给定的父元素下匹配所有的子元素,返回值:Array,参数:parent

15、(Selector):任何有效选择器;child(Selector): 用以匹配元素的选择器,并且它是第一个选择器的子元素示例:匹配表单中所有的子级input元素HTML 代码: Name: Newsletter: jQuery代码:$(“forminput”)结果: prev+next匹配所有紧接在 prev 元素后的 next 元素,返回值:Array,参数rev(Selector): 任何有效选择器;next (Selector) :一个有效选择器并且紧接着第一个选择器示例:匹配所有跟在lable后面的input元素HTML代码: Name: Newsletter: jQuery代码:$

16、(“lable+input”)Matches all next elements specified by next that are next to elements specified by prev结果:, Prevsiblings匹配 prev 元素之后的所有 siblings 元素,返回值:Array;参数prev (Selector) : 任何有效选择器,siblings (Selector) : 一个选择器,并且它作为第一个选择器的同辈示例:找到所有与表单同辈的 input 元素 Name: Newsletter: jQuery代码:$(“forminput”)结果:1.4 XP

17、ath选择器XML 路径语言(XPath)是一种在 XML 文档中指定不同元素或者它们的值的语言,它与CSS 在 HTML 文档中指定元素的方法相类似。jQ uery 库支持支持一套基本的 XPath 选择器,如果我们想的话,我们可以让它与 CSS 选择器一起工作。使用 jQuery,不管文档的类型如何,我们都可使用 XPath 和 CSS 选择器。当谈到属性选择器时,jQuery 使用 XPath 指定属性的约定,属性通过在方括号里用 符号作为前缀指定,而不是用 CSS 的方法,它缺乏灵活性。例如,选择所有带有 title 属性的链接,我们会这样写:$(atitle)XPath 语法允许方括

18、号不使用 的另一个用法来指定一个不包含其它元素的元素。例如,我们可用下面的选择器表达式来得到所有包含一个 ol 元素的 div 元素:$(divol) 样式化连接:XPath 语法允许方括号不使用 的另一个用法来指定一个不包含其它元素的元素。例如,我们可用下面的选择器表达式来得到所有包含一个 ol 元素的 div 元素:$(divol)样式化链接属性选择器接收类正则表达式的语法来指定一个字符串的开始()与结束($)。它们也可用asterisk(*) 来指示一个字符串的任意位置。举例来说,我们想显示带不同文本颜色的不同种链接,我们首页在我们的样式表中定义样式:a color: #00f /* m

19、ake plain links blue */a.mailto color: #f00 /* make email links red */a.pdflink color: #090 /* make PDF links green */a.mysite textdecoration:none /* remove internal link underline */borderbottom:1px dotted #00f然后,我们用加入三个类(mailto、pdflink 和 mysite),并用 jQuery 将它们加到适合的链接。为了得到所有的 email 链接,我们创建一个选择器来查找所有

20、的anchor元素 (a) ,选择器用以 mailto 开头 (=mailto:) 的 href 属性 (href),如下:$(document).ready(function() $(ahref=mailto:).addClass(mailto)为了得到所有连接到 PDF 文件的链接,我们使用美元符号($)不是用脱字符号(),为了得到所有以 .pdf 结尾的 href 属性的链接,代码如下:$(document).ready(function() $(ahref=mailto:).addClass(mailto)$(ahref$=.pdf).addClass(pdflink)最后,为了得到内

21、部链接,例如,在 连接到其它页面,我们用星号:$(document).ready(function() $(ahref=mailto:).addClass(mailto)$(ahref$=.pdf).addClass(pdflink)$(ahref*=).addClass(mysite)这里, 在 href 的值出可出现在任何地方。如果我们也想在 里包含链接到任何子域名,那么这是特别重要的。应用到三种链接的三个类,我们应该下面的样式应用:用虚线下划线的蓝色文本:a href= You Like ItGreen text: HamletRed text: email以下是一个样式后的链接的截图:

22、我们总结一下属性选择器: attribute匹配包含给定属性的元素。返回值为:Array;参数:attribute(String):属性名;示例:查找所有含有Id属性的DIV元素。HTML代码:Hello!jQuery代码:$(“divid”)结果: attribute=value匹配给定的属性是某个特定值的元素.返回值:Array;参数:attribute(String):属性名;value(String): 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含时,用以避免冲突。示例:查找所有 name 属性是 newsletter 的 input 元素 HTML代码:jQuery代码

23、:$(inputname=newsletter).attr(checked, true);结果:, attribute!=value匹配所有含有指定的属性,但属性不等于特定值的元素。返回值:Array;参数:attribute (String):属性名;value(String):属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含时,用以避免冲突。示例:查找所有name属性不是newsletter 的input元素。HTML代码:jQuery代码:$(inputname!=newsletter).attr(checked, true);结果: attribute=value匹配给定的属

24、性是以某些值开始的元素;返回值:Array;参数:attribute (String) : 属性名, value ( String) : 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含时,用以避免冲突。示例:查找所有 name 以 news 开始的 input 元素HTML代码:jQuery代码:$(inputname=news)结果:, attribute$=value匹配给定的属性是以某些值结尾的元素,返回值为:Array; 参数:attribute(String):属性名,value(String):属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含时,用以避免冲突。

25、示例:查找所有 name 以 letter 结尾的 input 元素 HTML代码:jQuery代码:$(“inputname$=”letter”)结果:, attribute*=value匹配给定的属性是以包含某些值的元素;返回值:Array;参数:attribute (String) : 属性名;value (String) : 属性值。引号在大多数情况下是可选的。但在遇到诸如属性值包含时,用以避免冲突。示例:查找所有 name 包含 man 的 input 元素HTML代码:jQuery代码:$(inputname*=man)结果:, , selector1selector2select

26、orN复合属性选择器,需要同时满足多个条件时使用。返回值:Array;参数:selector1(Selector):属性选择器,selector2 (Selector) : 另一个属性选择器,用以进一步缩小范围,selectorN (Selector) : 任意多个属性选择器。示例:找到所有含有 id 属性,并且它的 name 属性是以 man 结尾的HTML代码:jQuery代码:$(inputidname$=man)结果: 1.5 自定义选择器对于各种的 CSS 和 XPath 选择器,jQuery 加入了它自定义的选择器,大部分自定义的选择器允许我们在一个队列外选择某些元素。这个语法是与

27、 CSS 伪类语法,即选择器以冒号(:)开头。例如,如果我们想从一组匹配选择带有horizontal类的div中选择第二项,我们像这样写$(div.horizontal:eq(1)注意 eq(1) 获得是第二项,因为 JavaScript 的数组编号方式是基于零的,指的是从零开始算起。相反,CSS 选择器如$(div:nthchild(1)获得任何 div 的父亲的第一个孩子。1.5.1 样式化交替行在 jQuery 库中有两个很有用的自定义选择器是 :odd 和 :even,让我们看看如何使用这些选择器为 table 制作基本的间条,给定以下的 table:As You Like ItCom

28、edyAlls Well that Ends WellComedyHamletTragedyMacbethTragedyRomeo and JulietTragedyHenry IV, Part IHistoryHenry VHistory现在我们可加入两个类到样式表,一个是给奇数行的,一个是给偶数行的。.odd backgroundcolor:#ffc /* pale yellow for odd rows */.even backgroundcolor:#cef /* pale blue for even rows */最后,我们写我们的 jQuery 代码,附加这些类到表格的行( 标签)

29、:$(document).ready(function() $(tr:odd).addClass(odd)$(tr:even).addClass(even)这时我们的表格如下图:注意,在一个页面中如果有超过一个表格的话,或许这不是我们想看到的结果。例如,既然在这个表格的最后一行有一个深色的背景,那 么在下一个表格的第一行将会有一个浅色的背景。在后面章节我们会研究如何避免这类问题。谈到最后一个自定义的选择器时,让我们以某些原因假设,我们想高亮任何相关 Herry 的表格单元。我们要做的所有事件是加入一个类到样式表,使文本变粗体和颜色变红色(.highlight fontweight:bold c

30、olor: #f00),并加入一行使用用 :contains() 选择器jQuery代码。$(document).ready(function() $(tr:odd).addClass(odd)$(tr:even).addClass(even)$(td:contains(Henry).addClass(highlight)这时,我们看到界面效果如下:诚然,有一些方法可以不用 jQuery 也能达到高亮的效果,或者任何客户端编程。然而,当内容不是动态产生的并且我们没有访问任一 HTML 或者服务器端代码,jQuery 结合 CSS对做这种样式是一个很好的选择。我们解释一下刚才用到的函数: :ev

31、en匹配所有索引值为偶数的元素,从 0 开始计数,返回值:Array,示例:查找表格的1、3、5.行(即索引值0、2、4.)HTML代码: Header 1 Value 1 Value 2jQuery代码:$(tr:even)结果:Header 1, Value 2Matches even elements, zero-indexed. :odd匹配所有索引值为奇数的元素,从 0 开始计数; 返回值:Array示例:查找表格的2、4、6行(即索引值1、3、5.)HTML代码: Header 1 Value 1 Value 2jQuery代码:$(“tr:odd”)结果:Value 1 :eq(

32、index)匹配一个给定索引值的元素;返回值:Element;参数:index(Number):从0开始计数示例:查找第二行HTML代码: Header 1 Value 1 Value 2jQuery代码:$(“tr:eq(1)”)结果:Value 1 :contains(text)匹配包含给定文本的元素; 返回值:Array;参数text (String) : 一个用以查找的字符串。示例:查找所有包含“john“的DIV元素HTML代码:John ResigGeorge MartinMalcom John SinclairJ. OhnjQuery代码:$(“div:contains(john

33、)”)结果:John Resig, Malcom John SinclairMatches elements which contain the given text.1.5.2 DOM遍历方法到目前为止,我们研究的jQuery 选择器允许我们遍历 DOM 树并过虑结果,然后得到一组元素。如果这是得到元素的唯一方法,我们的选择会受到限制。在获得一个父亲或者祖先元素时,有很多场合是基本的。并且那是 jQuery 遍历方法来操作的地方。我们设计的这些方法,很容易遍历 DOM 树。在选择器表达式中,一些方法几乎是相同的。例如,我们来用添加类的那一行,$(tr:odd).addClass(odd),可用.filter方法来重写如下:$(tr).filter(:odd).addClass(odd)获得元素的这两种方法是互补的,让我们再看一看表格间条的例子首先,这个表格可用一个标题列,所以我们会加入另一个包含两个 的 元素,而不是 元素:TitleCategory注意:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论