UNPKG

@mdui/jq

Version:

拥有和 jQuery 相似 API 的轻量级 JavaScript 工具库

43 lines (42 loc) 1.37 kB
import { $ } from '../../$.js'; import { unique } from '../../functions/unique.js'; import { JQ } from '../../shared/core.js'; import { isElement } from '../../shared/helper.js'; import '../each.js'; import '../is.js'; export const dir = ($elements, nameIndex, node, // eslint-disable-next-line @typescript-eslint/no-explicit-any selector, filter) => { const ret = []; let target; $elements.each((_, element) => { target = element[node]; // 不能包含最顶层的 document 元素 while (target && isElement(target)) { // prevUntil, nextUntil, parentsUntil if (nameIndex === 2) { if (selector && $(target).is(selector)) { break; } if (!filter || $(target).is(filter)) { ret.push(target); } } // prev, next, parent else if (nameIndex === 0) { if (!selector || $(target).is(selector)) { ret.push(target); } break; } // prevAll, nextAll, parents else { if (!selector || $(target).is(selector)) { ret.push(target); } } target = target[node]; } }); return new JQ(unique(ret)); };