jQuery原始碼分析之 index函式

2021-07-05 15:04:38 字數 1580 閱讀 5739

測試**1:

js部分

var first=$("span").first();//獲取到第乙個span元素id="nz"

var $pre=first.prevall();//獲取該元素前面的所有的同級元素,為n4

alert($pre.length);//結果返回1,因為前面只有乙個同級元素。如果n4前面還有乙個span元素,那麼this.first().prevall().length為0!

測試**2:

var reg="#n4";

//把字串包裝為jquery物件了,這裡列印結果為2。也就是相當於乙個選擇器物件

//和$("#n4")的選擇結果是一樣的

alert(jquery("span").length);

//列印true

alert(jquery(reg) instanceof jquery);

index原始碼分析:

index: function( elem ) 

// index in selector

//如果指定引數為字元型,如呼叫:$("li").index( "#n4" )

if ( typeof elem === "string" )

// locate the position of the desired element

return jquery.inarray(

// if it receives a jquery object, the first element is used

//如果是jquery物件作為引數,那麼獲取引數第乙個物件在呼叫選擇器中的位置!

elem.jquery ? elem[0] : elem, this );

}

總結:(為了方便,把呼叫者稱為呼叫物件,引數稱為引數物件)

(1)引數物件如果是jquery物件或者dom物件,那麼獲取該jquery物件的第乙個dom元素或者傳入的dom元素,看他在呼叫物件中的位置

(2)引數物件如果是string物件,那麼把引數物件封裝為jquery選擇器物件,判斷呼叫物件的第乙個dom元素在該引數選擇器中的位置

(3)引數如果是空,那麼獲取滿足呼叫者物件選擇結果的最前面的乙個元素(如$("span")表示最前面的span元素$("span")[0],然後看最前面的$("span")[0]元素的兄弟節點的個數)的前面所有的同級元素的個數this.first().prevall().length

//如果呼叫index方法時候,沒有傳入引數,我們就是獲取第乙個呼叫物件的最前面的同級元素個數!

var $spans=$('span');

var siblings=$spans.index();

//首先獲取呼叫物件的$('span')最前面的那個元素;然後我們看看最前面的那個元素之前的同級元素有多少!

//最前面的那個元素是nz,他前面的同級元素是ul元素

console.log(siblings);

jQuery原始碼分析之noConflict方法

1 因為下面函式的返回值是jquery物件,以後用x代替 了 只是名字不同而已 var x noconflict var 123 到這裡 被修改為123,被寫到這裡noconflict裡面的 是沒有意義的 x function 上面把var 123寫在那個位置下面兩行 沒有意義的 那麼什麼時候有意義...

jQuery原始碼分析

工具 版本說明 版本號備註 jquery 2.1.1 sublime 3jquery function selector,context jquery.fn jquery.prototype 快速匹配正則 不加g 不光匹配整體項還會匹配到子項 rquickexpr s w w w init jque...

jQuery原始碼分析

一 jquery如何做到不汙染變數名並暴露出 供使用者使用 jquery將變數和 寫進立即執行函式,通過函式來包裹所有的變數和方法,再在這個立即執行函式上將 jquery方法繫結到window上,就可以讓使用者使用到jq方法了。二 jquery是如何做到 jquery 的?function wind...