測試**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...