Jquery的parentsUntil()方法用於查找Jquery對象的祖先,使用的時候有三個問題一定要注意:
1) parentsUntil返回的是一個數組,而不是單個對象。關於這個,注意’parents’是複數就行了,表示它會返回一系列的祖先元素,在數組中越外層的元素的下標越大。
2) parentsUntil返回的數組中剛好不包括滿足選擇器參數條件的對象。這個有點奇怪,很容易產生誤導。
3) parentsUntil返回的數組中都不是Jquery封裝的對象,需要再次封裝它們才能使用Jquery提供的API。這個更奇怪,連官方文檔都沒有說明這一點,尤其是在另一個API調用 parent()返回的是Jquery對象的情況下,parentsUntil()的這種返回類型很容易產生誤導。
舉例來說,如果想獲得包含某元素(id=”xxx”)的最近的一個div容器,
錯誤寫法1:
var divparent = $(“#xxx”).parentsUntil(“div”); //parentsUntil返回的是一個數組而不是單個元素
錯誤的寫法2:
var parents = $(“#xxx”).parentsUntil(“div”);
var divparent = parents[parents.length-1]; //parentsUntil返回的數組中剛好不包括滿足選擇器參數條件的對象
錯誤的寫法3:
var parents = $(“#xxx”).parentsUntil(“div”);
var divparent = parents[parents.length-1].parent(); //返回的數組中都不是Jquery封裝的對象,需要再次封裝它們才能使用Jquery提供的parent()調用。
正確寫法:
var parents = $(“#xxx”).parentsUntil();
var divparent = $(parents[parents.length-1]).parent();