每当创建一个新的元素(或者选择一个已经存在的元素)时,JQuery将返回一个元素的集合。大部分的开发人员新接触JQuery的时候,都把这个集合当做数组。这个集合中的DOM元素有从零开始的索引,这集合也包含了数组常用的方法和length属性,但是JQuery对象是比这更加复杂的。
  • DOM和DOM元素
    这里DOM表示的是一个HTML文档,它可能包含了许多的DOM元素,一个元素可以是一个页面内的一片东西,它包含了文本还有其他的DOM元素。也可以是一个单一的DOM元素由类型(标签)、属性等组成的。
    元素包含了许多的属性就像JavaScript对象那样,这些属性是唯一能进行网页交互的方式。
  • 操作元素
    事实上直接去操作元素是比较困难复杂的,JQuery定义了去多方法可以帮助开发者去更方便的操作元素。
    我们可以使用DOM方法来操作元素。
var target = document.getElementById( "target" );
target.innerHTML = "<td>Hello <b>World</b>!</td>";
var newElement = document.createElement( "div" );
target.parentNode.insertBefore( target.nextSibling, newElement )

但是由于浏览器兼容性问题,很多时候一些DOM方法会在某些浏览器中失效,这时我们可以使用JQuery的方法来操作元素,不但有效而且操作更加的方便。

var target = document.getElementById( "target" );
$( target ).html( "<td>Hello <b>World</b>!</td>" );
var newElement = document.createElement( "div" );
$( target ).after( newElement );
  • 获取元素到JQuery对象中
    当JQuery方法是通过CSS的选择被调用的时候,它将返回一个JQuery对象,包含了那些匹配选择器的元素。
// 选择所有的<h1>标签.
var headings = $( "h1" );

这里的headings是一个JQuery对象包含了这个页面上所有的h1标签,可以通过length属性查看它拥有h1标签的数量。

// 查看当前页面<h1>标签的数量
var allHeadings = $( "h1" );
alert( allHeadings.length );

如果页面中包含多个h1标签,则length显示的是h1标签的数量,如果页面中没有h1标签,则length为0。通过检查length属性可以确保选择器是否成功匹配了页面上的元素。

    如果我们想要的是多个元素中的第一个元素,那么我们有多种方法可以实现这一要求,例如使用.eq()方法。
// 选择第一个元素
var headings = $( "h1" );
var firstHeading = headings.eq( 0 );

现在firstHeading是一个JQuery对象包含了页面上第一个h1标签,并且因为它是一个JQuery对象,可以使用JQuery的方法。其中有一个.get()方法,返回的是元素本身,而不是JQuery包裹的元素。

// 选择第一个元素
var firstHeadingElem = $( "h1" ).get( 0 );

因为JQuery对像是一个类数组,所以它也支持通过数组下标来获取子项。

// 选择第一个元素
var firstHeadingElem = $( "h1" )[ 0 ];

firstHeadingElem包含了本地的DOM元素,这意味着它也包含了DOM元素的属性和方法,不过相比下来JQuery的方法使用起来更加方便。

  • JQuery对象不是按照===方式创建的
    需要注意的是每一个JQuery包裹的对象都是唯一的,即使对象是用相同的选择器创建或者引用相同的DOM元素。
// 创建两个JQuery对象拥有相同的元素。
var logo1 = $( "#logo" );
var logo2 = $( "#logo" );

虽然他们按照相同的方式创建,但是他们却是不同的对象。

// 比较2个对象
alert( $( "#logo" ) === $( "#logo" ) ); // false

无论如何,两个对象包含的是相同的元素,可以通过.get()方法进行比较,两者所包含的元素确实是相同的。

// 比较DOM元素
var logo1 = $( "$logo" );
var logo1Elem = logo1.get( 0 );
var logo2 = $( "#logo" );
var logo2Elem = logo2.get( 0 );
alert( logo1Elem === logo2Elem ); // true

无论使用怎样的命名约定,非常重要的一点是JQuery对象和DOM元素有很大不同,原生的DOM方法和属性在JQuery对象上是不存在的,反之亦然。

  • JQuery对象不是“活”的
    通过JQuery获取页面上所有的段落元素。
// 获取页面上所有的<p>元素
var allParagraphs = $( "p" );

所选元素的集合可能会发送变化,增加或者减少。然而JQuery对象所包含的这个元素集合不会自动的随之变化,如果文档发生了变化,那么需要重新创建一个JQuery对象来获取元素。

// 更新选择器
allParagraphs = $( "p" );
  • 包装
    虽然DOM提供的所有功能,可以创建出我们需要的交互式网页,但那样很麻烦。使用JQuery对象包装的元素就非常的容易。当使用JQuery来创建和选择元素时,元素都将被包装在一个新的JQuery对象中。如果需要使用本地DOM元素,可以使用.get()方法或数组下标的方式来获取元素。

JQuery官方学习资料(译):JQuery对象的更多相关文章

  1. JQuery官方学习资料(译):避免与其他库的冲突

    避免与其他库的冲突     JQuery库和它所有的插件都是包含在jQuery命名空间下的,作为一般规则,全局对象被存储在jQuery的命名空间内,所以你不会得到jQuery和任何其他库之间的冲突(例 ...

  2. JQuery官方学习资料(译):类型

    类型     JavaScript提供了多个内置数据类型.除了这些,这份文档还将介绍一些虚拟类型,例如选择器.伪类.事件等. String 在JavaScript中字符串是一个不可变的对象,它包含无. ...

  3. JQuery官方学习资料(译):遍历JQuery对象和非JQuery对象

        JQuery提供了一个对象遍历的Utility方法$.each()和一个JQuery集合遍历方法.each(). $.each()     $.each()是一个通用的方法用来遍历对象和数组, ...

  4. JQuery官方学习资料(译):使用JQuery的.index()方法

        .index()是一个JQuery对象方法,一般用于搜索JQuery对象上一个给定的元素.该方法有四种不同的函数签名,接下来将讲解这四种函数签名的具体用法. 无参数的.index() < ...

  5. JQuery官方学习资料(译):Utility方法

        JQuery提供了一些utility方法在$命名空间里,这些方法对完成常规的编程任务非常有帮助. $.trim()     删除前后部的空白内容. // 返回 "lots of ex ...

  6. JQuery官方学习资料(译):Data方法

        你可能经常会想需要通过元素来存储一些数据.在JavaScript中你可能需要给元素添加属性来实现这样的功能,但是在某些浏览器中,你可能还需要处理因此造成的内存泄露问题.JQuery提供了一个简 ...

  7. JQuery官方学习资料(译):CSS

        JQuery提供了一个处理方法,可以获取或设置元素的CSS属性. // 获取 CSS 属性 $( "h1" ).css( "fontSize" ); / ...

  8. JQuery官方学习资料(译):操作元素

      获取和设置元素的信息     有很多种方式可以改变现有的元素,最常见的是改变HTML内容或者元素的属性.JQuery提供了简单的夸浏览器的方法来帮助你实现元素信息的获取和设置. .html():获 ...

  9. JQuery官方学习资料(译):选择器的运作

    Getters 和 Setters     JQuery的方法重载,方法设置和获取值一般使用相同名称的方法,当一个方法用来设置一个值的时候称之为Setter,当一个方法用来获取一个值的时候称之为Get ...

随机推荐

  1. 《python语言程序设计》_第二章笔记

    #2.2_编写一个简单的程序 项目1: 设计:radius=20,求面积area? 程序: radius=20 #给变量radius复制area=radius*radius*3.14159 #编写ar ...

  2. 项目小程序笔记-登录界面+FPGA管脚分配文件生成

    声明:只是为了记录我遇到的一些问题,其中有我理解错的望勿参考. (1)qt designer设计好窗口 主窗口: 登录窗口: 关于qt designer的使用,大可以百度,很简单的,要注意的是部件的参 ...

  3. mysql case when then else end 的写法

    select t.colum1,t.colum2 (case when t.colum1 = '' then '' t.when colum2 = '' then '' else '' end ) a ...

  4. 12Js_原型对象

    对象描述: 1. 每个对象中都有一个_proto_属性. JS世界中没有类(模具)的概念,对象是从另一个对象(原型)衍生出来的,所以每个对象中会有一个_proto_属性指向它的原型对象.(参考左上角的 ...

  5. C语言窗口例子

    #include <windows.h> LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ; //声明用来处理消息的函数 in ...

  6. Python学习笔记【第九篇】:Python面向对象基础

    Python语言中一切皆对象(类.属性.方法.........) 概念 面向对象编程:Object Oriented Programming 简称OOP 面向对象程序设计 面向对象和面向过程都是解决问 ...

  7. [Postman]捕获HTTP请求(14)

    如果您使用API​​构建客户端应用程序 - 移动应用程序,网站或桌面应用程序 - 您可能希望查看应用程序中发送和接收的实际HTTP请求流量.在某些情况下,您可能会发现甚至没有记录的API.Postma ...

  8. css3 奇技淫巧 - 如何给小汽车换个背景色谈起

    css3 的魅力,不容小觑.曾经被她折服,再度回首,依旧拜倒在她的石榴裙下.相信在未来,她仍然魅力依旧. 站在巨人的肩上学习,不断提升自身实力. 用 CSS 和颜色选择工具更改图片中的颜色,即如何给小 ...

  9. 深入分析Java I/O的工作机制 (一)

    此篇博客看至许令波的深入分析javaWeb内幕书籍, 此篇博客写的是自己看完之后理解的重点内容,加一些理解,希望对你有帮助. 1.Java的I/O类库的基本架构 先说一下什么是类库:可以说是类的集合, ...

  10. AI - 学习路径(Learning Path)

    初见 机器学习图解 错过了这一篇,你学机器学习可能要走很多弯路 这3张脑图,带你清晰人工智能学习路线 一些课程 Andrew Ng的网络课程 HomePage:http://www.deeplearn ...