当前位置:首页 > JavaScript

js实现jquerywrap

2026-01-31 23:56:57JavaScript

使用原生JavaScript实现jQuery的wrap功能

jQuery的wrap()方法允许开发者用指定的HTML结构包裹匹配的元素。以下是几种原生JavaScript实现方式:

js实现jquerywrap

方法一:使用parentNode和insertBefore

function wrap(element, wrapper) {
    const parent = element.parentNode;
    const nextSibling = element.nextSibling;
    parent.insertBefore(wrapper, element);
    wrapper.appendChild(element);
}

方法二:处理多个元素的情况

function wrapAll(elements, wrapper) {
    if (elements.length === 0) return;

    const firstElement = elements[0];
    const parent = firstElement.parentNode;

    parent.insertBefore(wrapper, firstElement);

    Array.from(elements).forEach(el => {
        wrapper.appendChild(el);
    });
}

方法三:支持字符串形式的wrapper参数

function wrapWithSelector(element, wrapper) {
    const temp = document.createElement('div');
    temp.innerHTML = wrapper;
    const realWrapper = temp.firstElementChild;

    element.parentNode.insertBefore(realWrapper, element);
    realWrapper.appendChild(element);

    return realWrapper;
}

方法四:完整实现(支持单元素和集合)

function wrap(elements, wrapper) {
    if (typeof wrapper === 'string') {
        const temp = document.createElement('div');
        temp.innerHTML = wrapper;
        wrapper = temp.firstElementChild;
    }

    if (elements.length) {
        Array.from(elements).forEach(el => {
            el.parentNode.insertBefore(wrapper.cloneNode(true), el)
                .appendChild(el);
        });
    } else {
        elements.parentNode.insertBefore(wrapper, elements);
        wrapper.appendChild(elements);
    }
}

使用示例

// 包裹单个元素
const div = document.querySelector('.target');
wrap(div, '<div class="wrapper"></div>');

// 包裹多个元素
const spans = document.querySelectorAll('span');
wrapAll(spans, document.createElement('div'));

注意事项

  • 这些实现不包含jQuery wrap()的所有功能,但覆盖了主要用例
  • 处理动态创建的wrapper元素时要注意内存泄漏问题
  • 对于复杂的DOM操作,可能需要添加额外的错误处理
  • 性能考虑:批量操作DOM比多次单独操作更高效

标签: jsjquerywrap
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

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

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…