zoukankan      html  css  js  c++  java
  • 原生JS取代一些JQuery方法的简单实现

    原生JS取代一些JQuery方法的简单实现

    下面小编就为大家带来一篇原生JS取代一些JQuery方法的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

     

    1.选取元素

    // jQuery
    var els = $('.el');
    
    // Native
    var els = document.querySelectorAll('.el');
    
    // Shorthand
    var $ = function (el) {
     return document.querySelectorAll(el);
    }

    querySelectorAll方法返回的是NodeList对象,需要转换为数组。

    myList = Array.prototype.slice.call(myNodeList)

    2.创建元素

    // jQuery
    var newEl = $('<div/>');
    
    // Native
    var newEl = document.createElement('div');

    3.添加事件

    // jQuery
    $('.el').on('event', function() {
    
    });
    
    // Native
    [].forEach.call(document.querySelectorAll('.el'), function (el) {
     el.addEventListener('event', function() {
    
     }, false);
    });

    4.get/set属性

    // jQuery
    $('.el').filter(':first').attr('key', 'value');
    $('.el').filter(':first').attr('key');
    
    // Native
    document.querySelector('.el').setAttribute('key', 'value');
    document.querySelector('.el').getAttribute('key');

    5.添加和移除样式Class

    DOM元素本身有一个可读写的className属性,可以用来操作class。

    HTML 5还提供一个classList对象,功能更强大(IE 9不支持)。

    // jQuery
    $('.el').addClass('class');
    $('.el').removeClass('class');
    $('.el').toggleClass('class');
    
    // Native
    document.querySelector('.el').classList.add('class');
    document.querySelector('.el').classList.remove('class');
    document.querySelector('.el').classList.toggle('class');

    6.追加元素

    尾部追加元素:

    // jQuery
    $('.el').append($('<div/>'));
    
    // Native
    document.querySelector('.el').appendChild(document.createElement('div'));

    头部追加元素:

    //jQuery
    $(‘.el').prepend('<div></div>')
    
    //Native
    var parent = document.querySelector('.el');
    parent.insertBefore("<div></div>",parent.childNodes[0])

    7.克隆元素

    // jQuery
    var clonedEl = $('.el').clone();
    
    // Native
    var clonedEl = document.querySelector('.el').cloneNode(true);

    8.移除元素

    Remove
    // jQuery
    $('.el').remove();
    
    // Native
    remove('.el');
    
    function remove(el) {
     var toRemove = document.querySelector(el);
    
     toRemove.parentNode.removeChild(toRemove);
    }

    9.获取父级元素

    // jQuery
    $('.el').parent();
    
    // Native
    document.querySelector('.el').parentNode;

    10.获取上一个/下一个元素(Prev/next element)

    // jQuery
    $('.el').prev();
    $('.el').next();
    
    // Native
    document.querySelector('.el').previousElementSibling;
    document.querySelector('.el').nextElementSibling;

    11.XHR and AJAX

    // jQuery
    $.get('url', function (data) {
    
    });
    $.post('url', {data: data}, function (data) {
    
    });
    
    // Native
    
    // get
    var xhr = new XMLHttpRequest();
    
    xhr.open('GET', url);
    xhr.onreadystatechange = function (data) {
    
    }
    xhr.send();
    
    // post
    var xhr = new XMLHttpRequest()
    
    xhr.open('POST', url);
    xhr.onreadystatechange = function (data) {
    
    }
    xhr.send({data: data});

    12.清空子元素

    //jQuery
    $("#elementID").empty()
    
    //Native
    var element = document.getElementById("elementID")
    while(element.firstChild) element.removeChild(element.firstChild);

    13.检查是否有子元素

    //jQuery
    if (!$("#elementID").is(":empty")){}
    
    //Native
    if (document.getElementById("elementID").hasChildNodes()){}

    14.$(document).ready

    DOM加载完成,会触发DOMContentLoaded事件,等同于jQuery的$(document).ready方法。

    document.addEventListener("DOMContentLoaded", function() {
      // ...
    });

    15.数据储存

    jQuery对象可以储存数据。

    $("body").data("foo", 52);

    HTML 5有一个dataset对象,也有类似的功能(IE 10不支持),不过只能保存字符串。

    element.dataset.user = JSON.stringify(user);
    element.dataset.score = score;

    16.动画

    jQuery的animate方法,用于生成动画效果。

    $foo.animate('slow', { x: '+=10px' }

    jQuery的动画效果,很大部分基于DOM。但是目前,CSS 3的动画远比DOM强大,所以可以把动画效果写进CSS,然后通过操作DOM元素的class,来展示动画。

    foo.classList.add('animate')

    如果需要对动画使用回调函数,CSS 3也定义了相应的事件。

    el.addEventListener("webkitTransitionEnd", transitionEnded);
    el.addEventListener("transitionend", transitionEnded);

    源:http://www.jb51.net/article/93038.htm

  • 相关阅读:
    Mysql查询数据库表结构以及字段类型并展示
    Configutation读取properties文件信息
    通过淘宝接口免费获取IP地址信息
    SpringMVC+SPring+Maven+Mybaits+Shiro+Mybaits基础开发项目
    【微信开发】【Asp.net MVC】-- 微信分享功能
    NPOI导出多张图片到Excel
    年末回想 ---- 小步快跑
    【吉光片羽】短信验证
    【JavaScript吉光片羽】--- 滑动条
    电子书和纸质书有什么区别
  • 原文地址:https://www.cnblogs.com/daysme/p/6538588.html
Copyright © 2011-2022 走看看