contains
选择器通常用于 jQuery 中,用于选择包含特定文本的元素。然而,在原生 JavaScript 中并没有直接的 contains
选择器。如果你需要在不使用 jQuery 的情况下实现类似的功能,可以考虑以下几种替代方法:
querySelectorAll
和 Array.prototype.filter
你可以结合 querySelectorAll
和数组的 filter
方法来实现类似的功能。以下是一个示例:
// 获取所有元素
const elements = document.querySelectorAll('*');
// 过滤包含特定文本的元素
const filteredElements = Array.from(elements).filter(el => el.textContent.includes('特定文本'));
console.log(filteredElements);
document.evaluate
document.evaluate
是一个强大的 XPath 查询方法,可以用来选择包含特定文本的元素。以下是一个示例:
// 使用 XPath 查询包含特定文本的元素
const xpathExpression = `//*[contains(text(), '特定文本')]`;
const result = document.evaluate(xpathExpression, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
const filteredElements = [];
for (let i = 0; i < result.snapshotLength; i++) {
filteredElements.push(result.snapshotItem(i));
}
console.log(filteredElements);
getElementsByClassName
或 getElementsByTagName
如果你知道目标元素的类名或标签名,可以使用 getElementsByClassName
或 getElementsByTagName
结合 Array.prototype.filter
来实现:
// 获取所有类名为 'example' 的元素
const elements = document.getElementsByClassName('example');
// 过滤包含特定文本的元素
const filteredElements = Array.from(elements).filter(el => el.textContent.includes('特定下文本'));
console.log(filteredElements);
document.body.querySelectorAll
和 :contains
伪类(部分浏览器支持)虽然 :contains
伪类并不是标准的 CSS 选择器,但一些旧版本的浏览器(如旧版本的 Firefox)支持它。你可以尝试以下方法:
// 使用 :contains 伪类选择包含特定文本的元素(部分浏览器支持)
const filteredElements = document.body.querySelectorAll(':contains("特定文本")');
console.log(filteredElements);
querySelectorAll
和 Array.prototype.filter
可能会导致性能问题。可以考虑使用更高效的算法或分批处理数据。document.evaluate
和 :contains
伪类在某些浏览器中可能不被支持。可以使用 polyfill 或回退方案来处理兼容性问题。filter
方法中使用正则表达式或其他字符串处理方法。希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云