当前位置:首页 > JavaScript

js 实现$方法

2026-04-07 01:58:19JavaScript

实现 $ 方法

在 JavaScript 中实现类似 jQuery 的 $ 方法,可以通过创建一个函数来简化 DOM 操作。以下是一个基本的实现方式:

function $(selector) {
  const elements = document.querySelectorAll(selector);
  return elements.length === 1 ? elements[0] : elements;
}

扩展功能

为了更接近 jQuery 的功能,可以扩展 $ 方法,使其支持 DOM 操作和事件绑定:

function $(selector) {
  const elements = document.querySelectorAll(selector);

  const api = {
    elements,
    css: function(property, value) {
      this.elements.forEach(el => {
        el.style[property] = value;
      });
      return this;
    },
    on: function(event, callback) {
      this.elements.forEach(el => {
        el.addEventListener(event, callback);
      });
      return this;
    }
  };

  return api;
}

链式调用

通过返回 this,可以实现链式调用:

$('.my-class')
  .css('color', 'red')
  .on('click', () => console.log('Clicked'));

创建元素

支持通过字符串创建新元素:

function $(selector) {
  if (selector.startsWith('<') && selector.endsWith('>')) {
    const el = document.createElement(selector.slice(1, -1));
    return {
      element: el,
      appendTo: function(parent) {
        document.querySelector(parent).appendChild(this.element);
        return this;
      }
    };
  }
  // 其他实现...
}

完整示例

结合以上功能,以下是一个更完整的实现:

js 实现$方法

function $(selector) {
  if (selector.startsWith('<') && selector.endsWith('>')) {
    const el = document.createElement(selector.slice(1, -1));
    return {
      element: el,
      appendTo: function(parent) {
        document.querySelector(parent).appendChild(this.element);
        return this;
      },
      attr: function(name, value) {
        this.element.setAttribute(name, value);
        return this;
      }
    };
  }

  const elements = document.querySelectorAll(selector);

  const api = {
    elements,
    css: function(property, value) {
      this.elements.forEach(el => {
        el.style[property] = value;
      });
      return this;
    },
    on: function(event, callback) {
      this.elements.forEach(el => {
        el.addEventListener(event, callback);
      });
      return this;
    },
    addClass: function(className) {
      this.elements.forEach(el => {
        el.classList.add(className);
      });
      return this;
    }
  };

  return api;
}

使用示例

$('<div>')
  .attr('id', 'new-div')
  .appendTo('body');

$('#new-div')
  .css('background', 'blue')
  .addClass('highlight')
  .on('mouseover', () => console.log('Mouse over'));

这种方法提供了基本的 DOM 操作和事件绑定功能,可以根据需要进一步扩展。

标签: 方法js
分享给朋友:

相关文章

java如何调用方法

java如何调用方法

调用方法的基本语法 在Java中,调用方法需要明确方法所属的对象(实例方法)或类(静态方法),并传递必要的参数。语法格式如下: 实例方法:对象名.方法名(参数列表); 静态方法:类名…

js实现驼峰

js实现驼峰

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

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…