js实现选择器
实现基本选择器
在JavaScript中,可以通过多种方式实现元素选择功能。最常用的是document.querySelector()和document.querySelectorAll()方法,它们支持CSS选择器语法。
// 选择单个元素
const element = document.querySelector('#id-selector');
const element = document.querySelector('.class-selector');
const element = document.querySelector('div');
// 选择多个元素
const elements = document.querySelectorAll('.multiple-elements');
传统DOM选择方法
较旧的DOM选择方法仍然有效,适用于简单场景:
// 通过ID获取
document.getElementById('element-id');
// 通过类名获取
document.getElementsByClassName('class-name');
// 通过标签名获取
document.getElementsByTagName('div');
复杂选择器组合
CSS选择器语法支持复杂的选择条件:

// 组合选择器
document.querySelector('div.class-name');
// 属性选择器
document.querySelector('[data-attribute="value"]');
// 伪类选择器
document.querySelector('li:nth-child(2)');
// 后代选择器
document.querySelector('div span');
// 子元素选择器
document.querySelector('ul > li');
遍历和筛选结果
对选择结果进行进一步处理:
// 筛选NodeList
const listItems = document.querySelectorAll('li');
const specialItems = Array.from(listItems).filter(item =>
item.classList.contains('special')
);
// 遍历结果
document.querySelectorAll('.items').forEach(element => {
element.style.color = 'red';
});
性能优化建议
选择器使用应考虑性能因素:

- 优先使用ID选择器,速度最快
- 避免过度复杂的选择器链
- 对重复使用的选择结果进行缓存
- 在大型文档中考虑使用更具体的上下文
// 上下文限定提高效率
const container = document.getElementById('app');
const items = container.querySelectorAll('.item');
事件委托中的选择器
事件委托模式常结合选择器使用:
document.addEventListener('click', event => {
if (event.target.matches('.clickable-item')) {
// 处理点击事件
}
});
自定义选择器扩展
可以扩展原生选择器功能:
// 自定义伪类选择器
if (!document.querySelectorAll(':focus-visible').length) {
document.querySelectorAll(':focus').forEach(el => {
// 实现polyfill
});
}
这些方法覆盖了JavaScript中实现选择器的主要技术和最佳实践,从基础用法到高级应用场景。






