前端最基礎的就是 HTML+CSS+Javascript
。掌握了這三門技術就算入門,但也僅僅是入門,如今前端開發的定義已經遠遠不止這些。前端小課堂(HTML/CSS/JS
),本着提高技術水平,打牢基礎知識的中心思想,咱們開課啦(每週四)。html
上一節咱們講了 jQuery
的基本使用。這節咱們講元素節點相關的內容。前端
選擇器在初級的時候就講過了。上節也簡單的列了一下。這節就找一點騷東西說一說吧。jquery
先問問DOM的API查找性能,有不知道的嗎?由快到慢 ID > Class > Name > Tag。
CSS 選擇器匹配的順序,有不知道的嗎?從左往右
jQuery的選擇器匹配的順序,有沒有不知道的?Sizzle 選擇器引擎從左往右,固然,既然人家優秀確定有道理。若是支持更快querySelector
會選擇更快的方法。若是有id選擇器,他會先進行id選擇,縮小範圍。感興趣能夠去看看Sizzle選擇器引擎介紹,有能力讀源碼固然更好了。正則表達式
舉個栗子segmentfault
$('div span')
代碼結構:api
div div div span div span
div
的話,咱們須要遍歷多少次?兩次能夠嗎?可是若是先查span
,那咱們parent
去找直到找到頭就完事了。append
、appendTo
和 prepend
、prependTo
操做的是父子節點,效果也等同於原生的api。已存在節點是移動,新節點是新增。瀏覽器
parent.append(child)
是將child
添加到parent
的最後面。鏈式操做對象爲parent
。對應原生appendChild
child.appendTo(parent)
是將child
添加到parent
的最後面。鏈式操做對象爲child
。parent.prepend(child)
是將child
添加到parent
的最前面。鏈式操做對象爲parent
。child.prependTo(parent)
是將child
添加到parent
的最前面。鏈式操做對象爲child
。insertAfter
、after
和 insertBefore
、before
操做的是兄弟節點,效果同上。微信
A.after(B)
是在A後面增長B。鏈式操做對象爲A B.insertAfter(A)
是把B增長到A後面。鏈式操做對象爲B A.before(B)
是在A前面增長B。鏈式操做對象爲A B.insertBefore(A)
是把B增長到A前面。鏈式操做對象爲B wrap
、unwrap
、wrapall
、wrapInner
、replaceWith
、replaceAll
說實話這幾個我用都沒用過。cookie
$("a").wrap("<div class='wrap'></div>")
是指,將全部a標籤,用後面的節點包起來。$('li').unwrap()
將他們的父節點移除。也就是說全部子節點佔據了原來父級的位置。$("a").wrapAll("<div class='wrap'></div>")
是指,將全部到標籤都合併到第一個位置,而且包裹起來。$("a").wrapInner("<b></b>")
是指,講a標籤的內容,用b標籤包裹起來。$("a").replaceWith('<a href="//www.lilnong.top">lilnong.top</a>')
將全部的a標籤,用新標籤替換。那麼鏈式操做對象是誰?$('<a href="//www.lilnong.top">lilnong.top</a>').replaceAll("a")
用新標籤替換,把全部的a標籤替換。那麼鏈式操做對象是誰?empty
、remove
、detach
$("a").empty()
刪除匹配的元素集合中全部的子節點。$("a").remove()
從DOM中刪除全部匹配的元素。這個方法不會把匹配的元素從jQuery對象中刪除,於是能夠在未來再使用這些匹配的元素。但除了這個元素自己得以保留以外,其餘的好比綁定的事件,附加的數據等都會被移除。$("a").detach()
從DOM中刪除全部匹配的元素。這個方法不會把匹配的元素從jQuery對象中刪除,於是能夠在未來再使用這些匹配的元素。與remove()
不一樣的是,全部綁定的事件、附加的數據等都會保留下來。 clone([Event[,deepEven]])
克隆一個副本出來。咱們知道,若是這個元素是文檔內的,那麼上面的方法會變成移動。當咱們不想移動的時候,就須要clone。session
hasClass(class)
判斷當前元素有沒有對應class
。好比咱們在模擬複選框,咱們須要判斷當前的狀態。$(this).hasClass('checked')
filter(class)
好比咱們現有一個全部複選框的合集,咱們要過濾出全部選中狀態的。next()
獲取下一個元素nextAll()
獲取後面全部元素nextUntil()
獲取後面全部元素,能夠設置終止條件。parent()
、prev()
基本有next()
相識的方法siblings()
獲取全部兄弟元素end()
我以爲這個方法就很厲害,把當前的鏈式操做對象移交給上次。$("p").find("span").end()
目前操做對象是$("p")