看到遞迴就想記下來。
簡述
element.closest
是一個 DOM 的方法,用來找第一個符合「選取器」的父元素。
思路大概是這樣子:
- 找到上層父元素
- 如果父元素符合搜尋的 class 名稱,就把父元素回傳
- 如果上層還有元素,重複上面兩個步驟
備註:只要是 DOM 中的「元素節點」都會有 classList 屬性,所以 node.classList
是在檢查「是不是元素節點」,只要不符合就表示找到底了(最後會找到 <html>
的父層 -> 也就是 undefined
)
迴圈迭代法
1 | function closest(node, className) { |
遞迴法
1 | function closestRecursive(node, className) { |