当前位置:首页 > JavaScript

js实现jqueryindex

2026-02-01 14:27:27JavaScript

实现 jQuery 的 index() 方法

在 jQuery 中,index() 方法用于获取当前元素在其兄弟元素中的位置索引。以下是使用原生 JavaScript 实现类似功能的几种方法。

js实现jqueryindex

使用 Element.parentElementElement.children

通过获取父元素的所有子元素列表,遍历找到当前元素的索引:

js实现jqueryindex

function index(element) {
  if (!element.parentElement) return -1;
  const children = element.parentElement.children;
  for (let i = 0; i < children.length; i++) {
    if (children[i] === element) return i;
  }
  return -1;
}

使用 Array.prototype.indexOf

将父元素的子元素集合转换为数组,直接使用 indexOf 方法查找:

function index(element) {
  if (!element.parentElement) return -1;
  return Array.from(element.parentElement.children).indexOf(element);
}

支持选择器过滤

如果需要像 jQuery 那样支持传入选择器参数,可以扩展实现:

function index(element, selector) {
  if (!element.parentElement) return -1;
  const siblings = selector 
    ? Array.from(element.parentElement.querySelectorAll(selector))
    : Array.from(element.parentElement.children);
  return siblings.indexOf(element);
}

示例用法

const item = document.querySelector('.list-item');
console.log(index(item)); // 输出元素在父元素中的索引
console.log(index(item, '.active')); // 输出元素在符合.active选择器的兄弟元素中的索引

注意事项

  • 如果元素没有父元素(如 document 或已分离的节点),返回 -1
  • jQuery 的 index() 在不传参数时返回在所有兄弟元素中的位置,传选择器时返回在匹配元素中的位置。
  • 原生实现可能不如 jQuery 的版本健壮,需根据实际需求调整边界条件处理。

标签: jsjqueryindex
分享给朋友:

相关文章

js实现

js实现

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

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…