學習zepto.js(對象方法)[6]

first:

獲取當前對象集合中的第一個dom元素。html

$("div").first(); // 返回第一個div對象(zepto對象)
//至關於$("div").eq(0);

與之對應的是lastnode

last:

獲取當前對象集合中的最後一個dom元素。數組

$("div").last(); // 返回最後一個div對象(zepto對象)
//至關於$("div").eq(-1);

 兩方法不接收任何參數。dom

我的認爲調用isObject方法沒什麼用,由於zepto對象集合裏存放的都是dom元素。//也許是我無知吧- -this

被大神點醒了。這樣作也許是爲了這種場景spa

get:

獲取當前對象集合對應下標的某元素,傳入參數爲一個int下標,若是不傳入參數,則將對象轉換爲一個普通數組並返回;3d

$("div").get(0);     // 第0個。(dom對象,不是zepto對象)
$("div").get();      //全部div對象組成的一個數組 

 

該方法與eq方法的區別在於,eq返回的是zepto對象,而get返回的是dom對象,$().get(0)至關於$()[0];code

slice就是[].slice();htm

使用get而且不傳入參數的對象先後變化圖:對象

has:

傳入參數爲一個選擇器字符串或者一個節點,返回的是對象集合中子節點包含參數的對象。

$("div").has("a"); // 會返回集合中全部包含a標籤的對象

 

上述是傳入一個選擇器,也能夠傳入一個node節點做爲參數

$("div").has(document.getElementById("link")); //返回集合中有子項爲#link的對象

 

首先,filter方法會將返回值爲true的子項裝入一個集合。

在filter方法內,咱們經過判斷選擇器是否爲object來進行區分,若是是object,則調用contains方法,判斷selector是否屬於this。

不然經過當前對象來調用find方法並將selector傳入,並調用size方法獲取count(filter會自動將返回值轉換爲bool類型)。

parent:

獲取對象集合全部的直接父節點。能夠傳入一個選擇器,只留下符合選擇器的父節點。

$("p").parent();       // 獲取全部p標籤的父節點
$("p").parent(".ads");    // 獲取全部p標籤的父節點className包含.ads的節點

 

pluck方法返回一個數組,參數是一個字符串,爲屬性名,返回的值是調用對象所對應的屬性的值;

而後傳入uniq方法,方法作了一個去重處理;

最外層的方法filtered,若是第二個參數selector不爲空,則經過第一個參數調用filter方法並將第二個參數傳入filter方法,不然直接返回第一個參數。

parents:

獲取全部對象的全部父節點。直至html標籤結束。能夠傳入一個參數,做爲選擇器篩選;

參數只能是一個選擇器字符串;

返回的集合不會出現重複的元素;

若是想取出元素的直接父節點,使用parent;

若是想取出第一個符合篩選條件的父節點,使用closest。

$("p").parents();        // 獲取全部p標籤的全部父節點
$("p").parents(".ads");   // 獲取全部p標籤的全部父節點className包含ads的節點

 

//使用parents若是不傳入參數,則始終會包含一個body以及html元素;

方法首先聲明一個數組用於存放dom元素,將this賦值給nodes變量;

使用一個while循環,條件爲nodes.length > 0;

在循環內部,經過$.map給nodes進行賦值,map方法內部將node賦值爲node的父節點,

而後判斷,若是節點不是document而且該節點不存在於ancestors數組中,則將節點push至數組,並返回node。

因此說循環中止的條件就是node節點爲document時。

最後調用filtered方法並返回。

siblings:

獲取對象全部的兄弟節點。參數能夠是一個選擇器字符串,如傳入參數則根據選擇器過濾。

$("p").siblings();      // 獲取全部p標籤的同級標籤
$("p").siblings(".ad");   // 全部的p標籤的同級的className包含ad的元素

 

經過siblings獲取到的dom元素會重複。

方法內部用到了一個children方法。

方法內部取出元素的父節點並傳入children方法,返回元素的父節點的子節點,至關於本身的全部兄弟節點以及自身。

經過該返回集合call一下filter方法。

並將除了自身之外的全部節點返回。

最後經過filtered方法進行篩選,返回;

注意,siblings獲取的元素會重複,會重複,會重複(重說三);

就像這樣,script標籤出現了兩次;

 ok,先說到這裏了。寫寫博客練習一下語言表達能力,感受本身能理解了,仍是說很差,糾結ing...

相關文章
相關標籤/搜索