自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

改變獲取對象方式 萬能的jQuery選擇器

開發(fā) 開發(fā)工具
本章講解jQuery最重要的選擇器部分的知識,有了jQuery的選擇器我們幾乎可以獲取頁面上任意的一個或一組對象, 可以明顯減輕開發(fā)人員的工作量。

編寫任何javascript程序我們要首先獲得對象,jQuery選擇器可以獲取幾乎任何語意的對象,比如"擁有title屬性并且值中包含test的元素",完成這些工作只需要編寫一個jQuery選擇器字符串,學(xué)習(xí)jQuery選擇器是學(xué)習(xí)jQuery最重要的一步。

51CTO推薦專題: jQuery從入門到精通

Dom對象和jQuery包裝集

無論是在寫程序還是看API文檔,  我們要時刻注意區(qū)分Dom對象和jQuery包裝集。

1.Dom對象

在傳統(tǒng)的javascript開發(fā)中,我們都是首先獲取Dom對象,比如:

  1. var div = document.getElementById("testDiv");   
  2. var divs = document.getElementsByTagName("div"); 

我們經(jīng)常使用document.getElementById方法根據(jù)id獲取單個Dom對象, 或者使用document.getElementsByTagName方法根據(jù)HTML標(biāo)簽名稱獲取Dom對象集合。

另外在事件函數(shù)中, 可以通過在方法函數(shù)中使用this引用事件觸發(fā)對象(但是在多播事件函數(shù)中IE6存在問題), 或者使用event對象的target(FF)或srcElement(iIE6)獲取到引發(fā)事件的Dom對象

注意我們這里獲取到的都是Dom對象, Dom對象也有不同的類型比如input, div, span等.  Dom對象只有有限的屬性和方法:

2.jQuery包裝集

jQuery包裝集可以說是Dom對象的擴充.在jQuery的世界中將所有的對象, 無論是一個還是一組, 都封裝成一個jQuery包裝集,比如獲取包含一個元素的jQuery包裝集:

  1. var jQueryObject = $("#testDiv");
  2.  

jQuery包裝集都是作為一個對象一起調(diào)用的. jQuery包裝集擁有豐富的屬性和方法, 這些都是jQuery特有的:

3.Dom對象與jQuery對象的轉(zhuǎn)換

(1) Dom轉(zhuǎn)jQuery包裝集

如果要使用jQuery提供的函數(shù),  就要首先構(gòu)造jQuery包裝集.  我們可以使用本文即將介紹的jQuery選擇器直接構(gòu)造jQuery包裝集,比如:

  1. $("#testDiv");
  2.  

上面語句構(gòu)造的包裝集只含有一個id是testDiv的元素,或者我們已經(jīng)獲取了一個Dom元素,比如:

  1. var div = document.getElementById("testDiv"); 
  2.  

上面的代碼中div是一個Dom元素, 我們可以將Dom元素轉(zhuǎn)換成jQuery包裝集:

  1. var domToJQueryObject = $(div); 
  2.  

小竅門:因為有了智能感知, 所以我們可以通過智能感知的方法列表來判斷一個對象啊是Dom對象還是jQuery包裝集.

(2) jQuery包裝集轉(zhuǎn)Dom對象

jQuery包裝集是一個集合, 所以我們可以通過索引器訪問其中的某一個元素:

  1. var domObject = $("#testDiv")[0]; 
  2.  

注意, 通過索引器返回的不再是jQuery包裝集, 而是一個Dom對象!jQuery包裝集的某些遍歷方法,比如each()中, 可以傳遞遍歷函數(shù), 在遍歷函數(shù)中的this也是Dom元素,比如:

  1. $("#testDiv").each(function() { alert(this) })
  2.  

如果我們要使用jQuery的方法操作Dom對象,怎么辦? 用上面介紹過的轉(zhuǎn)換方法即可:

  1. $("#testDiv").each(function() { $(this).html("修改內(nèi)容") })
  2.  

小結(jié): 先讓大家明確Dom對象和jQuery包裝集的概念, 將極大的加快我們的學(xué)習(xí)速度. 我在學(xué)習(xí)jQuery的過程中就花了很長時間沒有領(lǐng)悟到兩者的具體差異, 因為書上并沒有專門講解兩者的區(qū)別, 所以經(jīng)常被"this指針為何不能調(diào)用jQuery方法"等問題迷惑.  直到某一天豁然開朗, 發(fā)現(xiàn)只要能夠區(qū)分這兩者, 就能夠在寫程序時變得清清楚楚。

#p#

什么是jQuery選擇器

在Dom編程中我們只能使用有限的函數(shù)根據(jù)id或者TagName獲取Dom對象,在jQuery中則完全不同,jQuery提供了異常強大的選擇器用來幫助我們獲取頁面上的對象, 并且將對象以jQuery包裝集的形式返回,首先來看看什么是選擇器:

  1. //根據(jù)ID獲取jQuery包裝集   
  2. ar jQueryObject = $("#testDiv"); 

上例中使用了ID選擇器, 選取id為testDiv的Dom對象并將它放入jQuery包裝集, ***以jQuery包裝集的形式返回。"$"符號在jQuery中代表對jQuery對象的引用, "jQuery"是核心對象, 其中包含下列方法:

  1. jQuery( expression, context )   
  2. Returns: jQuery 

這個函數(shù)接收一個CSS選擇器的字符串,然后用這個字符串去匹配一組元素。

  1. jQuery( html, ownerDocument )   
  2. Returns: jQuery 

根據(jù)HTML原始字符串動態(tài)創(chuàng)建Dom元素.

  1. jQuery( elements )   
  2. Returns: jQuery 

將一個或多個Dom對象封裝jQuery函數(shù)功能(即封裝為jQuery包裝集)

  1. jQuery( callback )   
  2. Returns: jQuery 

Returns的類型為jQuery即表示返回的是jQuery包裝集.其中***個方法有些問題, 官方接口寫的是CSS選擇器, 但是實際上這個方法不僅僅支持CSS選擇器, 而是所有jQuery支持的選擇器, 有些甚至是jQuery自定義的選擇器(在CSS標(biāo)準(zhǔn)中不存在的選擇器),為了能讓大家理解的更清楚,我們將方法修改如下:

  1. jQuery( selector, context )   
  2. Returns: jQuery  

根據(jù)選擇器選取匹配的對象, 以jQuery包裝集的形式返回。context可以是Dom對象集合或jQuery包裝集,傳入則表示要從context中選擇匹配的對象,不傳入則表示范圍為文檔對象(即頁面全部對象)。上面這個方法就是我們選擇器使用的核心方法.可以用"$"代替jQuery讓語法更簡介, 比如下面兩句話的效果相同:

  1. //根據(jù)ID獲取jQuery包裝集   
  2. var jQueryObject = $("#testDiv");   
  3. //$是jQuery對象的引用:   
  4. var jQueryjQueryObject = jQuery("#testDiv"); 

接下來讓我們系統(tǒng)的學(xué)習(xí)jQuery選擇器。

#p#

jQuery選擇器全解

通俗的講, Selector選擇器就是"一個表示特殊語意的字符串",只要把選擇器字符串傳入上面的方法中就能夠選擇不同的Dom對象并且以jQuery包裝集的形式返回。

但是如何將jQuery選擇器分類讓我犯難. 因為書上的分類和jQuery官方的分類截然不同. ***我決定以實用為主, 暫時不去了解CSS 3選擇器標(biāo)準(zhǔn), 而按照jQuery官方的分類進行講解。

jQuery的選擇器支持CSS 3選擇器標(biāo)準(zhǔn). 下面是W3C***的CSS3選擇器標(biāo)準(zhǔn):http://www.w3.org/TR/css3-selectors/。標(biāo)準(zhǔn)中的選擇器都可以在jQuery中使用.

jQuery選擇器按照功能主要分為"選擇"和"過濾". 并且是配合使用的. 可以同時使用組合成一個選擇器字符串. 主要的區(qū)別是"過濾"作用的選擇器是指定條件從前面匹配的內(nèi)容中篩選, "過濾"選擇器也可以單獨使用, 表示從全部"*"中篩選. 比如:

  1. $(":[title]") 
  2.  

等同于:

  1. $("*:[title]") 
  2.  

而"選擇"功能的選擇器則不會有默認(rèn)的范圍, 因為作用是"選擇"而不是"過濾",下面的選擇器分類中,  帶有"過濾器"的分類表示是"過濾"選擇器,  否則就是"選擇"功能的選擇器.jQuery選擇器分為如下幾類:

1. 基礎(chǔ)選擇器Basics

 基礎(chǔ)選擇器Basics

2.層次選擇器Hierarchy

層次選擇器Hierarchy

3.基本過濾器Basic Filters

基本過濾器Basic Filters

4. 內(nèi)容過濾器Content Filters

內(nèi)容過濾器Content Filters

5.可見性過濾器Visibility Filters

可見性過濾器Visibility Filters

6.屬性過濾器Attribute Filters

屬性過濾器Attribute Filters

7.子元素過濾器Child Filters

子元素過濾器Child Filters

8.表單選擇器Forms

表單選擇器Forms

9.表單過濾器Form Filters

表單過濾器Form Filters

【編輯推薦】

  1. jQuery選擇器深入分析:避免不必要的調(diào)用
  2. 淺析jQuery框架與構(gòu)造對象
  3. 5種方法教你用jQuery重寫表單驗證
  4. 即刻提升jQuery性能的十個技巧
  5. 使用jQuery構(gòu)建未來Web應(yīng)用程序
責(zé)任編輯:王曉東 來源: Cnblogs
相關(guān)推薦

2011-04-26 15:07:48

jQuery

2011-06-16 15:57:25

Android

2009-02-27 13:48:00

Mdaemon郵件服務(wù)器

2012-06-12 09:43:11

jQuery

2010-12-27 16:01:45

jQuery選擇器

2010-07-20 10:11:32

jQuery選擇器Sizzle

2016-11-24 12:07:42

Android萬能圓角ImageView

2022-11-30 13:13:41

節(jié)能減碳PUE

2014-02-17 10:56:21

Hadoop

2022-06-27 08:36:08

PythonLambda

2024-12-02 15:50:42

2009-12-03 18:13:36

PHP萬能密碼

2013-12-02 14:22:14

jQuery選擇器

2022-06-23 18:10:15

多云

2020-06-16 08:32:00

人工智能技術(shù)機器學(xué)習(xí)

2022-11-21 09:57:18

網(wǎng)關(guān)系統(tǒng)

2015-08-26 13:49:28

數(shù)據(jù)中心

2024-12-09 09:25:30

2011-12-22 20:56:44

Android

2020-10-31 21:47:06

Python數(shù)據(jù)結(jié)構(gòu)開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號