当前位置:首页 > JavaScript

js实现$()

2026-04-05 04:35:13JavaScript

实现 $() 函数

在 JavaScript 中实现类似 jQuery 的 $() 函数,可以通过以下方式完成。该函数通常用于选择 DOM 元素或创建 DOM 元素。

基本实现

function $(selector) {
    // 如果传入的是字符串,尝试选择 DOM 元素
    if (typeof selector === 'string') {
        const elements = document.querySelectorAll(selector);
        return elements.length === 1 ? elements[0] : elements;
    }
    // 如果传入的是函数,在 DOM 加载完成后执行
    else if (typeof selector === 'function') {
        document.addEventListener('DOMContentLoaded', selector);
    }
    // 如果传入的是 DOM 元素,直接返回
    else if (selector instanceof Element) {
        return selector;
    }
    // 其他情况返回 null 或 undefined
    return null;
}

支持创建新元素

扩展 $() 函数以支持创建新 DOM 元素:

function $(selector, attributes = {}, children = []) {
    // 创建新元素
    if (selector.startsWith('<') && selector.endsWith('>')) {
        const tagName = selector.slice(1, -1);
        const element = document.createElement(tagName);

        // 设置属性
        for (const [key, value] of Object.entries(attributes)) {
            element.setAttribute(key, value);
        }

        // 添加子元素
        children.forEach(child => {
            if (typeof child === 'string') {
                element.appendChild(document.createTextNode(child));
            } else {
                element.appendChild(child);
            }
        });

        return element;
    }
    // 其他情况保持不变
    return $(selector);
}

链式调用支持

如果需要支持链式调用(如 jQuery 风格),可以返回一个包含 DOM 元素和方法的新对象:

js实现$()

function $(selector) {
    const elements = typeof selector === 'string' 
        ? document.querySelectorAll(selector) 
        : [selector];

    return {
        elements,
        css: function(property, value) {
            this.elements.forEach(el => el.style[property] = value);
            return this;
        },
        addClass: function(className) {
            this.elements.forEach(el => el.classList.add(className));
            return this;
        }
        // 可以添加更多方法...
    };
}

使用示例

// 选择元素
const header = $('#header');
const buttons = $('.btn');

// 创建元素
const newDiv = $('<div>', { id: 'new-div' }, ['Hello World']);

// 链式调用
$('.btn').css('color', 'red').addClass('active');

注意事项

  1. 这个实现是简化版,jQuery 的实际实现要复杂得多,包含更多功能和方法。
  2. 在现代前端开发中,原生 JavaScript 的 document.querySelectordocument.querySelectorAll 已经足够强大,可能不需要自己实现 $() 函数。
  3. 如果需要完整功能,建议直接使用 jQuery 或其他现代库如 React、Vue 等。

标签: js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现点击显示和隐藏

js实现点击显示和隐藏

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

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js怎么实现异步

js怎么实现异步

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

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…