bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

jquerynew的簡單介紹

jQuery選擇器的工作原理和優化分析

每次申明一個jQuery對象的時候,返回的是jQuery.prototype.init

柳州網站制作公司哪家好,找創新互聯公司!從網頁設計、網站建設、微信開發、APP開發、成都響應式網站建設等網站項目制作,到程序開發,運營維護。創新互聯公司從2013年成立到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創新互聯公司。

對象,很多人就會不明白,init明明是jQuery.fn的方法啊,實際上這里不是方法,而是init的構造函數,因為js的prototype對象可

以實現繼承,加上js的對象只是引用不會是拷貝,new

jQuery,new

jQuery.fn和new

jQuery.fn.init的子對象是一樣的,只是有沒有執行到init的不同,這里就不講原因了,等下一篇再講為什么會是這樣。

當我們使用選擇器的時候$(selector,content),就會執行

init(selectot,content),我們看看inti中是怎樣執行的:

復制代碼

代碼如下:

if

(

typeof

selector

==

"string"

)

{

//正則匹配,看是不是HTML代碼或者是#id

var

match

=

quickExpr.exec(

selector

);

//沒有作為待查找的

DOM

元素集、文檔或

jQuery

對象。

//selector是#id的形式

if

(

match

(match[1]

||

!context)

)

{

//

HANDLE:

$(html)

-

$(array)

//HTML代碼,調用clean補全HTML代碼

if

(

match[1]

){

selector

=

jQuery.clean(

[

match[1]

],

context

);

}

//

是:

$("#id")

else

{

//判斷id的Dom是不是加載完成

var

elem

=

document.getElementById(

match[3]

);

if

(

elem

){

if

(

elem.id

!=

match[3]

)

return

jQuery().find(

selector

);

return

jQuery(

elem

);//執行完畢return

}

selector

=

[];

}

//非id的形式.在context中或者是全文查找

}

else{

return

jQuery(

context

).find(

selector

);

}

}

這里就說明只有選擇器寫成$(‘#id')的時候最快,相當于執行了一次

getElementById,后邊的程序就不用再執行了。當然往往我們需要的選擇器并不是這么簡單,比如我們需要id下的CSS為className,

有這樣的寫法$(‘#id.className')和$(‘#id').find(‘.className');這兩種寫法的執行結果都是一樣的,比

如div

id=”id”span

class=”className”/span/div,返回的肯定都是span

class=”className”/span,但是執行的效率是完全不一樣的。

在分析一下上邊的代碼,如果不是$(‘#id')這樣的簡單選擇器的話,都會執行find函

數,那我們再看看find到底是做用的:

復制代碼

代碼如下:

find:

function(

selector

)

{

//在當前的對象中查找

var

elems

=

jQuery.map(this,

function(elem){

return

jQuery.find(

selector,

elem

);

});

//下邊的代碼可以忽略,只是做一些處理

//這里應用了js的正則對象的靜態方法test

//indexOf("..")需要了解一下xpath的語法,就是判斷selector中包含父節點的寫法

//本意就是過濾數組的重復元素

return

this.pushStack(

/[^+]

[^+]/.test(

selector

)

||

selector.indexOf("..")

-1

?

jQuery.unique(

elems

)

:

elems

);

}

如果這樣寫$(‘#id

.className'),就會執行到擴展的find(‘#id

.className',document),因為當前的this是document的jQuery數組,那我們在看看擴展的find他的實現,代碼比較

多,就不列出來,總之就是從第二個參數傳遞進行的dom第一個子節點開始找,遇見#比對id,遇見.比對ClassName,還有:+-等處理。

那我們要優化,是不是就要想辦法讓第二個參數context的范圍最小,那樣遍歷是不是就很少了?

如果我們這樣寫$(‘#id').find(‘.className'),那程序只這樣執行

的,第一次init的時候執行一步getElementById,就return了,接著執行

find(‘.className',divDocument),divDocument就是我們第一次選擇的是div標簽,如果document下有很

多dom對象的時候,這次只遍歷divDocument是不是少了很多次,而且在第一次選擇id的速度也要比遍歷快的多。

現在大家應該是明白了吧。就是說第一層選擇最好是ID,而是簡單選擇器,目的就是定義范圍,

提高速度,這次就說這些,選擇寫法的優化,其他的優化,下次再說。

jQuery new slide()是做什么用的,怎么幫助文檔里沒有?

通過高度變化(向上減?。﹣韯討B地隱藏所有匹配的元素,在隱藏完成后可選地觸發一個回調函數。

沒有slide()這個方法

jQuery源碼中的“new jQueryfninit”什么意思

就是初始化的。

從return

new

jQuery.fn.init(

selector,

context,

rootjQuery

)中可以看出

參數selector和context是來自我們在調用jQuery方法時傳過來的.

jQuery源碼中的“new jQuery.fn.init”什么意思

將這些key對應的value持久化到磁盤中,同時在內存中清除。

這種特性使得Redis可以保持超過其機器本身內存大小的數據。

當然,機器本身的內存必須要能夠保持所有的key,畢竟這些數據是不會進行swap操作的。

分享標題:jquerynew的簡單介紹
網頁鏈接:http://vcdvsql.cn/article20/dsiiojo.html

成都網站建設公司_創新互聯,為您提供外貿建站、網站改版、外貿網站建設網站營銷移動網站建設、建站公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站制作