• mui项目中如何使用原生JavaScript代替jquery来操作dom


    转载于:http://www.bcty365.com/content-146-3661-1.html

    最近在用mui写页面,当然了在移动App里引入jq或zepto这些框架,肯定是极不理性的。
    原生JS挺简单,为何需要jq?
    jq的成功当时是因为ie6、7、8、9、10、chrome、ff这些浏览器不兼容,让开发者崩溃,而且pc上浏览器性能好,跨平台兼容也不影响性能。但jq根本就不是为手机设计的。
    手机上只有webkit浏览器(忽略wp,反正mui不支持wp),根本就不需要jq这种封装框架来操作dom。
    选择元素
    //jq
    $('.el');
    //js   
    document.querySelector("div");
    div.querySelectorAll('.el');
    //mui
    mui(".el")[0];
    父、兄弟元素
    //jq
    $('.el').parent();
    $('.el').prev();
    $('.el').next();
    $('.el').last();
    $('.el').first();
    //js
    document.querySelector('.el').parentNode;
    document.querySelector('.el').previousElementSibling;
    document.querySelector('.el').nextElementSibling; 
    document.querySelector(".el").lastElementChild;
    document.querySelector(".el").children[0];
    获取元素文本
    //jq
    $('.el').html();
    $('.el').val();
    $('.el').text();
    $(el).replaceWith(string);
    //js
    document.getElementById('el').innerHTML;
    document.getElementById('el').value;
    document.getElementById('el').textContent
    document.getElementById('el').outerHTML = string;
    创建元素
    //jq
    var newEl = $('<div/>');
    //js
    var newEl = document.createElement('div');
    Set/get属性
    //jq
    $('.el').filter(':first').attr('key', 'value');
    $('.el').filter(':first').attr('key');
    $('.el').addClass('class');
    $('.el').removeClass('class');
    $('.el').toggleClass('class');
    $(el).css('border-width', '20px');
    //js
    document.querySelector('.el').setAttribute('key', 'value');
    document.querySelector('.el').getAttribute('key');
    document.querySelector('.el').classList.add('class');
    document.querySelector('.el').classList.remove('class');
    document.querySelector('.el').classList.toggle('class');
    document.querySelector('.el').style.borderWidth = '20px';
    附加
    //jq
    $('.el').append($('<div/>'));
    //js 
    document.querySelector('.el').appendChild(document.createElement('div'));
    克隆
    //jq
    var clonedEl = $('.el').clone();
    //js
    var clonedEl = document.querySelector('.el').cloneNode(true);
    移除
    //jq
    $('.el').remove();
    // js
    var toRemove = document.querySelector(el);
    toRemove.parentNode.removeChild(toRemove);
    ajax
    //jq
    $.get('url', function (data) {

    });
    $.post('url', {data: data}, function (data) {

    });
    //js
    // 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});
    显示和隐藏
    //jq
    $(el).show();
    $(el).hide();
    //js
    el.style.display = '';
    el.style.display = 'none';
    是否包含某个 class
    //jq
    $(el).hasClass(className);
    //js
    if (el.classList)
      el.classList.contains(className);
    else
      new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);    
    添加 Class
    //jq
    $(el).addClass(className);
    //js
    if (el.classList)
      el.classList.add(className);
    else
      el.className += ' ' + className;
    移除class
    //jq
    $(el).removeClass(className);
    //js
    // removeClass, takes two params: element and classname
    function removeClass(el, cls) {
      var reg = new RegExp("(\s|^)" + cls + "(\s|$)");
      el.className = el.className.replace(reg, " ").replace(/(^s*)|(s*$)/g,"");
    }

    如果你只需要支持像IE10+,Chrome,FireFox,Opera和Safari这样较现代的浏览器,那么你可以开始使用HTML5的classList功能,它让增加和删除类变得更简单
    el.classList.add(className);
    el.classList.remove("foo")
    el.classList.contains("foo");
    el.classList.toggle("active");
    插入 HTML
    //jq
    $(el).before(htmlString);
    $(parent).append(el);
    $(el).after(htmlString);
    //js
    el.insertAdjacentHTML('beforebegin', htmlString);
    parent.appendChild(el);
    el.insertAdjacentHTML('afterend', htmlString);
    获取子节点
    //jq
    $(el).children();
    //js
    el.children
    Trim
    全选复制放进笔记//jq
    $.trim(string);
    //js
    string.trim();

  • 相关阅读:
    转:qcow2、raw、vmdk等镜像格式
    openstack配置xen
    透过 Linux 内核看无锁编程
    转:查看进程所消耗的内存
    Ubuntu安装内核源码
    How to mark volume groups as active or inactive
    Failed to access IIS metabase(IIS Exception Problem)
    Android电子书下载:Google Android SDK开发范例大全(第2版)pdf+源码
    几个C++单元测试框架
    JavaScript命名空间namespace的实现方法
  • 原文地址:https://www.cnblogs.com/0to9/p/7281659.html
Copyright © 2020-2023  润新知