成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

回味jQuery系列(1)-選擇器

rubyshen / 2593人閱讀

摘要:選擇器淺析最核心的組成部分就是選擇器引擎,選擇器引擎占了很大一部分。它繼承了的語法,可以對元素的標(biāo)簽名屬性名狀態(tài)等進(jìn)行快速準(zhǔn)確的選擇,并且不必?fù)?dān)心瀏覽器的兼容性。在構(gòu)造選擇器時,盡量簡單,只保證必要的確定性。

jQuery-選擇器淺析

jQuery 最核心的組成部分就是:選擇器引擎,選擇器引擎Sizzle占了jQuery很大一部分。它繼承了CSS 的語法,可以對DOM 元素的標(biāo)簽名、屬性名、狀態(tài)等進(jìn)行快速準(zhǔn)確的選擇,并且不必?fù)?dān)心瀏覽器的兼容性。jQuery選擇器實現(xiàn)了CSS1~CSS3 的大部分規(guī)則之外,還實現(xiàn)了一些自定義的選擇器,用于各種特殊狀態(tài)的選擇。

基礎(chǔ)選擇器
選擇類型           選擇器                  返回  
元素名         $("div")            獲取所有div元素的DOM對象
ID            $("#xzavier")       獲取一個ID為box元素的DOM對象
類(class)     $(".xzavier")       獲取所有class為box的所有DOM對象
群組選擇       $("span,.xzavier")  獲取多個選擇器的DOM對象
后代選擇       $("ul li a")        獲取追溯到的多個DOM對象
通配選擇       $("*")              獲取所有元素標(biāo)簽的DOM對象
后代選擇       $("ul li a")        獲取追溯到的多個DOM對象
子選擇         $("div p")          只獲取子類節(jié)點的多個DOM對象
next選擇       $("div + p")        只獲取某節(jié)點后一個同級DOM對象
nextAll選擇    $("div ~ p")        獲取某節(jié)點后面所有同級DOM對象

$("#xzavier").find("button")      //等價后代選擇器
$("#xzavier").children("button")  //等價子選擇器
$("#xzavier").next("button")      //等價next選擇器 
$("#xzavier").nextAll("button")   //等價nextAll選擇器    
$("#xzavier").prev("button")      //選擇同級上一個元素
$("#xzavier").prevAll("button")   //選擇同級所有上面的元素
$("#xzavier").prevUntil("button") //選擇同級上非指定元素,遇到則停止
$("#xzavier").nextUntil("button") //選擇同級下非指定元素,遇到則停止
$("#xzavier").siblings("button")  //選擇同級上下所有元素

更多:
1.ID返回的是單個元素,而元素標(biāo)簽名和類(class)返回的是多個,我們可以采用jQuery 核心自帶的一個屬性length 或size()方法來查看返回的元素個數(shù)。
2.ID在頁面中是唯一的,一般要求開發(fā)者要遵守規(guī)范。如果你在頁面中出現(xiàn)三次,在CSS使用樣式是會成功顯示樣式的,但在jQuery,就匹配不到后面的ID。
3.在使用上,通配選擇器一般用的并不多,尤其是,比如:$(""),這種使用方法效率很低,影響性能。
4.在構(gòu)造選擇器時,盡量簡單,只保證必要的確定性。當(dāng)選擇器篩選越復(fù)雜,jQuery 內(nèi)部的選器引擎處理字符串的時間就越長。
5.注意,find()、next()、nextAll()和children()這四個方法中,如果不傳遞參數(shù),就相當(dāng)于傳遞了“*”,即任何節(jié)點。

屬性選擇器
對應(yīng)CSS模式               選擇器                            返回
a[title]           $("a[title]")             獲取title屬性的DOM對象
a[title=num]       $("a[title=num]")         獲取title屬性且=num的DOM對象
a[title^=num]      $("a[title^=num]")        獲取title且開頭屬性值匹配的DOM對象
a[title|=num]      $("a[title|=num]")        獲取title且=num或開頭屬性值匹配后面跟一個“-”號的DOM對象
a[title$=num]      $("a[title$=num]")        獲取title屬性且結(jié)尾屬性值匹配的DOM對象
a[title!=num]      $("a[title!=num]")        獲取title屬性且!=num的DOM對象
a[title~=num]      $("a[title~=num]")        獲取title且屬性值是以一個空格分割的列表,其中包含屬性值的DOM對象
a[title*=num]      $("a[title*=num]")        獲取title且屬性值含有一個指定字串的DOM對象
a[xz][title=num]   $("a[xz][title=num]")     獲取具有bbb屬性且title屬性=num的DOM對象
過濾選擇器 基本過濾選擇器
過濾器名          jQuery              返回       
:first         $("li:first")     選取第一個元素     
:last          $("li:last")      選取最后一個元素   
:not(selector) $("li:not(.xzavier)") 選取class不是xzavier的li元素
:even          $("li.even")      選擇索引(0 開始)是偶數(shù)的所有元素
:odd           $("li:odd")       選擇索引(0 開始)是奇數(shù)的所有元素
:eq(index)     $("li:eq(2)")     選擇索引(0 開始)等于index的元素
:gt(index)     $("li:gt(2)")     選擇索引(0 開始)大于index的元素
:lt(index)     $("li.lt(2)")     選擇索引(0 開始)小于index的元素
:header        $(":header")      選擇標(biāo)題元素,h1 ~ h6 
:animated      $(":animated")    選擇正在執(zhí)行動畫的元素
:focus         $(":focus")       選擇當(dāng)前被焦點的元素

更多:
1.:focus 過濾器,必須是網(wǎng)頁初始狀態(tài)的已經(jīng)被激活焦點的元素才能實現(xiàn)元素獲取。而不是鼠標(biāo)點擊或者Tab鍵盤敲擊激活的。
2.:first、:last 和first()、last()這兩組過濾器和方法在出現(xiàn)相同元素的時候,first 會實現(xiàn)第一個父元素的第一個子元素,last 會實現(xiàn)最后一個父元素的最后一個子元素。所以,如果需要明確是哪個父元素。

內(nèi)容過濾器
過濾器名                jQuery                        返回
:contains(text)  $(":contains("xzavier")")  選取含有"xzavier"文本的元素
:empty           $(":empty")                選取不包含子元素或空文本的元素
:has(selector)   $(":has(.xzavier)")        選取含有class是xzavier的元素
:parent          $(":parent")               選取含有子元素或文本的元素

更多:
1.jQuery 提供了一個has()方法來提高:has 過濾器的性能:$("ul").has(".xzavier")
2.jQuery 提供了一個名稱和:parent 相似的方法,但這個方法并不是選取含有子元素或文本的元素,而是獲取當(dāng)前元素的父元素,返回的是元素集合

可見性過濾器
過濾器名      jQuery            返回
:hidden    $(":hidden")    選取所有不可見元素集合元素
:visible   $(":visible")   選取所有可見元素集合元素

更多:
1.:hidden 過濾器一般是包含的內(nèi)容為:CSS 樣式為display:none、input 表單類型為type="hidden"和visibility:hidden 的元素

子元素過濾器
過濾器名             jQuery                   返回
:first-child   $("li:first-child")   獲取每個父元素的第一個子元素
:last-child    $("li:last-child")    獲取每個父元素的最后一個子元素
:only-child    $("li:only-child")    獲取只有一個子元素的元素
:nth-child(odd/even/eq(index))  $("li:nth-child(even)")    獲取每個自定義子元素的元素(索引值從1開始計算)
過濾方法
方法名                 jQuery                               備注
is(s/o/q/f)       $("li").is(".red")           參數(shù)可傳遞選擇器、DOM、jquery對象或是函數(shù)來匹配
hasClass(class)   $("li").hasClass("xzavier")  同is("." + class)
slice(start, end) $("li").slice(0,2)           選擇從start到end位置的元素,如果是負(fù)數(shù),則從后面開始
filter(s/o/q/f)   $("li").filter(".xzavier")   參數(shù)可傳遞選擇器、DOM、jquery對象或是函數(shù)來匹配
end()             $("div").find("p").end()     獲取當(dāng)前元素前一次狀態(tài)集合元素
contents()        $("div").contents()          獲取某元素下面所有元素節(jié)點,包括文本節(jié)點
表單元素選擇器
選擇器名         jQuery               返回
:input       $(":input")       所有  元素
:text        $(":text")        所有 type="text" 的  元素
:password    $(":password")    所有 type="password" 的  元素
:radio       $(":radio")       所有 type="radio" 的  元素
:checkbox    $(":checkbox")    所有 type="checkbox" 的  元素
:submit      $(":submit")      所有 type="submit" 的  元素
:reset       $(":reset")       所有 type="reset" 的  元素
:button      $(":button")      所有 type="button" 的  元素
:image       $(":image")       所有 type="image" 的  元素
:file        $(":file")        所有 type="file" 的  元素      
:enabled     $(":enabled")     所有激活的 input 元素
:disabled    $(":disabled")    所有禁用的 input 元素
:selected    $(":selected")    所有被選取的 input 元素
:checked     $(":checked")     所有被選中的 input 元素

更多:
1.這些選擇器都是返回元素集合,如果想獲取某一個指定的元素,最好結(jié)合一下屬性選擇器。

$(":text[name=xzavier]); //獲取單行文本框name=xzavier 的元素  

我們在使用中,不會所有標(biāo)簽都有id,使用起來也不方便,代碼冗雜。綜合組合很多選擇器使用,選到特定的元素,也是非常方便的。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80125.html

相關(guān)文章

  • 回味jQuery系列(2)-動畫效果

    摘要:參數(shù)代表回調(diào)函數(shù)。參數(shù)為變化樣式的對象必傳,速度可選,回調(diào)函數(shù)可選。這是,肯定會想到采用回調(diào)函數(shù)來解決。確實可以解決問題,但是當(dāng)列隊動畫變多時,回調(diào)函數(shù)的可讀性大大降低確實一個非常煩人的問題。提供了一個類似于回調(diào)函數(shù)的方法。 jQuery-動畫效果淺析 動畫可以給網(wǎng)站的用戶體驗加分,讓網(wǎng)頁更加活潑。不過,什么東西都需要適量,簡易快捷的動畫會給網(wǎng)站加分不少。比如購物網(wǎng)站的個人中心按鈕ho...

    IamDLY 評論0 收藏0
  • 鋒利的jQuery學(xué)習(xí)心得

    摘要:熟悉了插件的組織結(jié)構(gòu)以及比較統(tǒng)一的修改和學(xué)習(xí)方法。項目結(jié)束后,抽時間專門學(xué)習(xí)的進(jìn)一步知識。對于選擇器的性能,自己在看到了類似問題無人回答,好奇之下自己測試了與的速度,并被網(wǎng)友指出使用不當(dāng)。 智營銷項目中開始嘗試使用jQuery并獲得了很大的幫助,項目結(jié)束之后專門花時間認(rèn)真看本書,配合網(wǎng)上搜索的一些知識和源碼,收獲很大。首先就是在項目中實戰(zhàn)邊學(xué)邊用了DOM的系列操作,并踩了JQ attr...

    focusj 評論0 收藏0
  • 前端文章- 收藏集 - 掘金

    摘要:我的職業(yè)是前端工程師入門不是應(yīng)該很簡單嗎前端掘金入門前端,是一件很難的事嗎在今天,我也沒有想好一個答案,也不知道怎樣給出一個答案。其他不多說了,這次的內(nèi)容主要深入理解及應(yīng)用前端掘金幾種常見的邊框用法。 GitHub 上學(xué)習(xí)前端開發(fā)的資料(不定期更新) - 前端 - 掘金GitHub 上學(xué)習(xí)前端開發(fā)的資料(不定期更新)... JS 進(jìn)階篇: 這可能是關(guān)于閉包最好的一篇文章 - 前端 - ...

    sugarmo 評論0 收藏0
  • 前端文章- 收藏集 - 掘金

    摘要:我的職業(yè)是前端工程師入門不是應(yīng)該很簡單嗎前端掘金入門前端,是一件很難的事嗎在今天,我也沒有想好一個答案,也不知道怎樣給出一個答案。其他不多說了,這次的內(nèi)容主要深入理解及應(yīng)用前端掘金幾種常見的邊框用法。 GitHub 上學(xué)習(xí)前端開發(fā)的資料(不定期更新) - 前端 - 掘金GitHub 上學(xué)習(xí)前端開發(fā)的資料(不定期更新)... JS 進(jìn)階篇: 這可能是關(guān)于閉包最好的一篇文章 - 前端 - ...

    Pocher 評論0 收藏0
  • jQuery 源碼系列(三)sizzle 選擇

    摘要:原本是中用來當(dāng)作選擇器的,后來被單獨分離出去,成為一個單獨的項目,可以直接導(dǎo)入到項目中使用。。本來我們使用當(dāng)作選擇器,選定一些或,使用或就可以很快鎖定所在的位置,然后返回給當(dāng)作對象。的優(yōu)勢使用的是從右向左的選擇方式,這種方式效率更高。 歡迎來我的專欄查看系列文章。 Sizzle 原本是 jQuery 中用來當(dāng)作 DOM 選擇器的,后來被 John Resig 單獨分離出去,成為一個單獨...

    icyfire 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<