zoukankan      html  css  js  c++  java
  • 原生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);
     
     
  • 相关阅读:
    [bzoj4364] [IOI2014]wall砖墙
    [bzoj3064] [Tyvj 1518] CPU监控
    [bzoj3434] [WC2014]时空穿梭
    ASP.NET
    ASP.NET
    ASP.NET
    ASP.NET
    ASP.NET
    ASP.NET
    MSSQL
  • 原文地址:https://www.cnblogs.com/ourLifes/p/9981768.html
Copyright © 2011-2022 走看看