当前位置:首页 > JavaScript

js实现 jquery index

2026-03-15 19:58:39JavaScript

使用原生JavaScript实现jQuery的index()功能

jQuery的index()方法用于获取当前元素在其同级元素中的位置。以下是用原生JavaScript实现类似功能的方法:

方法一:使用Array.prototype.indexOf

function getIndex(element) {
  if (!element || !element.parentNode) return -1;
  return Array.from(element.parentNode.children).indexOf(element);
}

方法二:使用previousElementSibling遍历

function getIndex(element) {
  let index = 0;
  let prev = element.previousElementSibling;

  while (prev) {
    index++;
    prev = prev.previousElementSibling;
  }

  return index;
}

方法三:带选择器过滤的实现

js实现 jquery index

function getIndex(element, selector) {
  const siblings = selector 
    ? Array.from(element.parentNode.querySelectorAll(selector))
    : Array.from(element.parentNode.children);

  return siblings.indexOf(element);
}

使用示例

<ul>
  <li>Item 1</li>
  <li class="active">Item 2</li>
  <li>Item 3</li>
</ul>

<script>
  const activeItem = document.querySelector('.active');
  console.log(getIndex(activeItem)); // 输出: 1
  console.log(getIndex(activeItem, 'li')); // 输出: 1
</script>

性能考虑

  • 方法一适合现代浏览器,利用了原生数组方法
  • 方法二在大型DOM结构中可能更高效,因为它不需要创建数组
  • 方法三提供了类似jQuery的带选择器过滤功能

注意事项

  • 这些实现返回的索引都是从0开始的
  • 如果元素不存在于父节点中,将返回-1
  • 与jQuery不同,这些实现不会自动处理文本节点和注释节点

标签: jsjquery
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

jquery和vue的区别

jquery和vue的区别

核心设计理念 jQuery是一个基于DOM操作的轻量级JavaScript库,主要用于简化HTML文档遍历、事件处理、动画设计等任务。它采用命令式编程风格,需要手动操作DOM元素。 Vue是一个渐进…