在頁面已經(jīng)引用jQuery的情況下,循環(huán)推薦用原生的for還是$.each?
網(wǎng)友解答: 我們現(xiàn)在看一下$.each的實(shí)現(xiàn)源碼。從源碼中就能看出,each就是使用的js原生代碼for語句。而且進(jìn)行了各種可能情況的預(yù)測(cè)。所以each函數(shù)的意義在于簡(jiǎn)寫代碼,和用戶兼容
我們現(xiàn)在看一下$.each的實(shí)現(xiàn)源碼。
從源碼中就能看出,each就是使用的js原生代碼for語句。而且進(jìn)行了各種可能情況的預(yù)測(cè)。所以each函數(shù)的意義在于簡(jiǎn)寫代碼,和用戶兼容性更好,而不在于速度。
其實(shí)不僅each函數(shù),jquery中的各種遍歷函數(shù)都是使用原生for、every、filter、reduce等語句生成。
jQuery 遍歷函數(shù)包括了用于篩選、查找和串聯(lián)元素的方法。
.add()將元素添加到匹配元素的集合中。
.andSelf()把堆棧中之前的元素集添加到當(dāng)前集合中。
.children()獲得匹配元素集合中每個(gè)元素的所有子元素。
.closest()從元素本身開始,逐級(jí)向上級(jí)元素匹配,并返回最先匹配的祖先元素。
.contents()獲得匹配元素集合中每個(gè)元素的子元素,包括文本和注釋節(jié)點(diǎn)。
.each()對(duì) jQuery 對(duì)象進(jìn)行迭代,為每個(gè)匹配元素執(zhí)行函數(shù)。
.end()結(jié)束當(dāng)前鏈中最近的一次篩選操作,并將匹配元素集合返回到前一次的狀態(tài)。
.eq()將匹配元素集合縮減為位于指定索引的新元素。
.filter()將匹配元素集合縮減為匹配選擇器或匹配函數(shù)返回值的新元素。
.find()獲得當(dāng)前匹配元素集合中每個(gè)元素的后代,由選擇器進(jìn)行篩選。
.first()將匹配元素集合縮減為集合中的第一個(gè)元素。
.has()將匹配元素集合縮減為包含特定元素的后代的集合。
.is()根據(jù)選擇器檢查當(dāng)前匹配元素集合,如果存在至少一個(gè)匹配元素,則返回 true。
.last()將匹配元素集合縮減為集合中的最后一個(gè)元素。
.map()把當(dāng)前匹配集合中的每個(gè)元素傳遞給函數(shù),產(chǎn)生包含返回值的新 jQuery 對(duì)象。
.next()獲得匹配元素集合中每個(gè)元素緊鄰的同輩元素。
.nextAll()獲得匹配元素集合中每個(gè)元素之后的所有同輩元素,由選擇器進(jìn)行篩選(可選)。
.nextUntil()獲得每個(gè)元素之后所有的同輩元素,直到遇到匹配選擇器的元素為止。
.not()從匹配元素集合中刪除元素。
.offsetParent()獲得用于定位的第一個(gè)父元素。
.parent()獲得當(dāng)前匹配元素集合中每個(gè)元素的父元素,由選擇器篩選(可選)。
.parents()獲得當(dāng)前匹配元素集合中每個(gè)元素的祖先元素,由選擇器篩選(可選)。
.parentsUntil()獲得當(dāng)前匹配元素集合中每個(gè)元素的祖先元素,直到遇到匹配選擇器的元素為止。
.prev()獲得匹配元素集合中每個(gè)元素緊鄰的前一個(gè)同輩元素,由選擇器篩選(可選)。
.prevAll()獲得匹配元素集合中每個(gè)元素之前的所有同輩元素,由選擇器進(jìn)行篩選(可選)。
.prevUntil()獲得每個(gè)元素之前所有的同輩元素,直到遇到匹配選擇器的元素為止。
.siblings()獲得匹配元素集合中所有元素的同輩元素,由選擇器篩選(可選)。
.slice()將匹配元素集合縮減為指定范圍的子集。