特殊原因研究了下 Jquery 选择器中的 :contains 功能
(例:$(‘p:contains(“测试”)’) ==> 找出所有内容文字包含“测试”的p标签节点)
遂自己做了个简单实现:
简单实现
/**
* Jquery 选择器 :contains 功能简单实现
* @param {string} selectorStr ID、Class、Tag等querySelectorAll支持的选择器语法
* @param {string} keyword 关键词
* @return {any[]} nodeArr 返回符合的 HTML Node 节点数组
*/
function getContainsNodes(selectorStr: string = '', keyword: string = '') {
if (!selectorStr || !keyword) return [];
const nodeArr: any[] = []; // 最终返回的HTML Node 节点数组
const domNodes: any[] = document.querySelectorAll(selectorStr)
for(let i in domNodes) {
const nodeContent = domNodes[i].textContent || ''
if (nodeContent.indexOf(keyword) > -1) {
nodeArr.push(domNodes[i])
}
}
return nodeArr
}
console.log(getContainsNodes('p', '测试'))