当前位置:首页 > JavaScript

js 实现jquery find

2026-03-16 06:17:11JavaScript

使用原生 JavaScript 实现类似 jQuery 的 find 方法

jQuery 的 find 方法用于在当前元素的子元素中查找匹配选择器的元素。以下是几种原生 JavaScript 的实现方式:

使用 querySelectorAll 实现

function find(selector, context) {
  context = context || document;
  return context.querySelectorAll(selector);
}

这个实现简单直接,但需要注意它返回的是 NodeList 而非数组。

js 实现jquery find

递归实现查找子元素

function find(selector, parent) {
  parent = parent || document;
  let elements = [];

  const children = parent.children;
  for (let i = 0; i < children.length; i++) {
    const child = children[i];
    if (child.matches(selector)) {
      elements.push(child);
    }
    elements = elements.concat(find(selector, child));
  }

  return elements;
}

这个实现更接近 jQuery 的实际行为,递归查找所有子元素。

js 实现jquery find

使用 Element.prototype 扩展方法

Element.prototype.find = function(selector) {
  return this.querySelectorAll(selector);
};

// 使用示例
document.find('#container').find('.item');

这种方法为所有 DOM 元素添加了 find 方法,类似于 jQuery 的链式调用。

兼容性更好的实现

function find(selector, context) {
  context = context || document;
  try {
    return context.querySelectorAll(selector);
  } catch(e) {
    const elements = [];
    const children = context.getElementsByTagName('*');

    for (let i = 0; i < children.length; i++) {
      if (children[i].id === selector.replace('#', '') || 
          children[i].className.split(' ').indexOf(selector.replace('.', '')) !== -1) {
        elements.push(children[i]);
      }
    }

    return elements;
  }
}

这个实现提供了基本的回退方案,在不支持 querySelectorAll 的旧浏览器中也能工作。

注意事项

  • 原生 JavaScript 方法通常返回 NodeList 而非 jQuery 对象
  • 如果需要链式调用,可以封装返回对象
  • 性能上 querySelectorAll 通常是最优选择
  • 复杂选择器可能需要额外处理

这些实现提供了从简单到复杂的不同方案,可以根据具体需求选择合适的实现方式。

标签: jsjquery
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

jquery 下载

jquery 下载

jQuery 下载方法 官方网站下载 访问 jQuery 官网,点击页面上的“Download”按钮。官网提供两个版本: 压缩版(Production):文件名类似 jquery-x.x.x.m…

jquery css

jquery css

jQuery 操作 CSS 的方法 jQuery 提供了多种方法来操作元素的 CSS 样式,包括获取、设置、添加或移除样式。以下是常用的方法: 获取 CSS 属性值 使用 .css() 方法获取元素…

引入jquery

引入jquery

引入jQuery的方法 通过CDN引入(推荐) 在HTML文件的<head>或<body>标签内添加以下链接,使用官方或公共CDN服务: <script src="…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js实现定位

js实现定位

使用Geolocation API获取当前位置 在JavaScript中,可以通过浏览器内置的Geolocation API获取用户的地理位置信息。该API需要用户授权才能访问位置数据。 if (n…