使用原生而不是jquery的好处是显而易见的,但是牺牲了对老浏览器的支持;但如果的项目使用angular或者其他老浏览器无法使用的技术,这个时候就没有必要再用jquery了; 以下是一些我整理的常用替换jquery的一些代码片段;如果你想知道更多细节,你可以访问:YouMightNotNeedjQuery.com

原生js与其他js框架的DOM操作速度对比

js speed

$('.elements') 类选择

    document.querySelectorAll('.elements');

$('#elements') ID选择

    document.querySelector('#element');
    document.getElementById("element");

$('.elements,#id') 复合选择

    document.querySelectorAll("#element-ID, .element-class");

其他选择

    //元素名选择
    document.getElementsByTagName('span');

    //子节点选择
    document.querySelectorAll('.elements > code');

    //后代节点
    document.querySelectorAll('.elements code');

    //相邻兄弟节点
    document.querySelectorAll('.element + *');

    //相邻兄弟节点(确切)
    document.querySelectorAll('.element + .next');

    //所有兄弟节点(确切)
    document.querySelectorAll('.element ~ .next');

    //参数选择
    document.querySelectorAll('code[data-selection="element"]');

    //获取body元素,$('body')
    document.body

    //获取整个HTML
    document.documentElement

一些element参数 可以不用 .attr('')

    var value = el.getAttribute('someName');
    el.setAttribute('someName','value');
    el.removeAttribute('someName')

不用getAttribute的参数:

$el.data('attr') 获取data参数

    element.dataset['attr']

$el.css('color','#fff') 设置样式

    element.style.color = "#af7aa5";

$el.addClass('name') 添加/删除类名称

    element.classList.add("name");
    element.classList.remove("name");
    element.classList.toggle('active');

    或者改变 elem.className
     elem.className += ' ' + className

$.append('something') 追加内容

    element.innerHTML = element.innerHTML + 'sometthing';

$(function(){ ... }) DOM/window加载完成

    document.addEventListener('DOMContentLoaded', function(){
        // Do something
    });

    window.addEventListener('load', function(){
        // Do something
    });

$('span').unwrap()

    var spans = document.getElementsByTagName('span');

    while( spans[0] ) {
        var parent = spans[0].parentNode;
        while( spans[0].firstChild ) {
            parent.insertBefore( spans[0].firstChild, spans[0]);
        }
        parent.removeChild( spans[0] );
    }

总结

能不用jquery就不要用jquery,先不说速度,毕竟jquery文件还有100多来k呢。

    简单NodeJS负载均衡(逐次对多个node进程的HTTP代理)统计本地Git仓库中不同贡献者的代码行数的一些方法