当前位置:首页 > JavaScript

js实现$()

2026-04-05 04:35:13JavaScript

实现 $() 函数

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

js实现$()

基本实现

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 元素:

js实现$()

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 元素和方法的新对象:

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
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js怎么实现异步

js怎么实现异步

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

js实现图片

js实现图片

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

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…