jQuery遞歸返回值是很常見的一種編程技巧。遞歸指的是函數調用自身的過程,通過遞歸可以在代碼中處理相同或類似的問題。
function sum(n) { if (n === 0) { return 0; } else { return n + sum(n - 1); } } console.log(sum(4)); //輸出10
上面的代碼是一個簡單的遞歸函數,用于計算1到n的和。該函數通過遞歸調用把問題分解成了相同的子問題,最后把子問題的結果累加起來得到最終結果。
在jQuery中,遞歸返回值可以用于查找某個元素的父級元素,也可以用于查找某個元素的祖先元素(如查找所有的父級元素直到body為止)。
//查找某個元素的父級元素 function findParent(el, selector) { if (el.is(selector)) { return el; } else { return findParent(el.parent(), selector); } } console.log(findParent($('#child'), '#parent')); //返回#parent元素 //查找某個元素的祖先元素 function findAncestor(el, selector) { if (el.is(selector)) { return el; } else if (el.parent().length > 0) { return findAncestor(el.parent(), selector); } else { return null; } } console.log(findAncestor($('#child'), 'body')); //返回body元素
上面的代碼分別展示了兩個查找元素的遞歸函數,需要注意的是遞歸函數應該設定一個結束條件并在遞歸子函數中向這個條件逐步靠近,否則可能會導致無限循環。