//JQUERY $(el).addClass(className); //js //谷歌瀏覽器,火狐瀏覽器,IE8+ if (el.classList) el.classList.add(className); else el.className += ' ' + className; //谷歌瀏覽器,火狐瀏覽器,IE10+ el.classList.add(className);
//JQUERY $(el).after(htmlString); //js 谷歌瀏覽器,火狐瀏覽器,IE8+ el.insertAdjacentHTML('afterend', htmlString);
//JQUERY $(parent).append(el); //js谷歌瀏覽器,火狐瀏覽器,IE8+ parent.appendChild(el);
//JQUERY $(el).before(htmlString); //js谷歌瀏覽器,火狐瀏覽器,IE8+ el.insertAdjacentHTML('beforebegin', htmlString);
//JQUERY $(el).children(); //js //谷歌瀏覽器,火狐瀏覽器,IE8+ var children = []; for (var i = el.children.length; i--;) { // Skip comment nodes on IE8 if (el.children[i].nodeType != 8) children.unshift(el.children[i]); } //谷歌瀏覽器,火狐瀏覽器,IE9+ el.children
//JQUERY $(el).clone(); //谷歌瀏覽器,火狐瀏覽器,IE8+ el.cloneNode(true);
//JQUERY $.contains(el, child); //谷歌瀏覽器,火狐瀏覽器,IE8+ el !== child && el.contains(child);
//JQUERY $(el).find(selector).length; //谷歌瀏覽器,火狐瀏覽器,IE8+ el.querySelector(selector) !== null
//JQUERY $(selector).each(function(i, el){ }); //js谷歌瀏覽器,火狐瀏覽器,IE8+ function forEachElement(selector, fn) { var elements = document.querySelectorAll(selector); for (var i = 0; i < elements.length; i++) fn(elements[i], i); } forEachElement(selector, function(el, i){ }); //js谷歌瀏覽器,火狐瀏覽器,IE9+ var elements = document.querySelectorAll(selector); Array.prototype.forEach.call(elements, function(el, i){ });
//JQUERY $(el).empty(); //js谷歌瀏覽器,火狐瀏覽器,IE8+ while(el.firstChild) el.removeChild(el.firstChild); //js谷歌瀏覽器,火狐瀏覽器,IE9+ el.innerHTML = '';
//JQUERY $(selector).filter(filterFn); //谷歌瀏覽器,火狐瀏覽器,IE8+ function filter(selector, filterFn) { var elements = document.querySelectorAll(selector); var out = []; for (var i = elements.length; i--;) { if (filterFn(elements[i])) out.unshift(elements[i]); } return out; } filter(selector, filterFn); //谷歌瀏覽器,火狐瀏覽器,IE9+ Array.prototype.filter.call(document.querySelectorAll(selector), filterFn);
//JQUERY $(el).find(selector); //谷歌瀏覽器,火狐瀏覽器,IE8+ el.querySelectorAll(selector);
//JQUERY $('.my #awesome selector'); //谷歌瀏覽器,火狐瀏覽器,IE8+ document.querySelectorAll('.my #awesome selector');
//JQUERY $(el).attr('tabindex'); //谷歌瀏覽器,火狐瀏覽器,IE8+ el.getAttribute('tabindex');
//JQUERY $(el).html(); //js el.innerHTML
//JQUERY $(el).css(ruleName); //谷歌瀏覽器,火狐瀏覽器,IE9+ getComputedStyle(el)[ruleName];
//JQUERY $(el).text(); //谷歌瀏覽器,火狐瀏覽器,IE8+ el.textContent || el.innerText //谷歌瀏覽器,火狐瀏覽器,IE9+ el.textContent
//JQUERY $(el).hasClass(className); //谷歌瀏覽器,火狐瀏覽器,IE8+ if (el.classList) el.classList.contains(className); else new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className); //谷歌瀏覽器,火狐瀏覽器,IE10+ el.classList.contains(className);
JQUERY $(el).is($(otherEl)); //js el === otherEl
//JQUERY $(el).is('.my-class'); //谷歌瀏覽器,火狐瀏覽器,IE8+ var matches = function(el, selector) { var _matches = (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector); if (_matches) { return _matches.call(el, selector); } else { var nodes = el.parentNode.querySelectorAll(selector); for (var i = nodes.length; i--;) { if (nodes[i] === el) return true; } return false; } }; matches(el, '.my-class'); //谷歌瀏覽器,火狐瀏覽器,IE9+ var matches = function(el, selector) { return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector); }; matches(el, '.my-class');
//JQUERY $(el).next(); //谷歌瀏覽器,火狐瀏覽器,IE8+ // nextSibling can include text nodes function nextElementSibling(el) { do { el = el.nextSibling; } while ( el && el.nodeType !== 1 ); return el; } el.nextElementSibling || nextElementSibling(el); //谷歌瀏覽器,火狐瀏覽器,IE9+ el.nextElementSibling
//JQUERY $(el).offset(); //js谷歌瀏覽器,火狐瀏覽器,IE8+ var rect = el.getBoundingClientRect() { top: rect.top + document.body.scrollTop, left: rect.left + document.body.scrollLeft }
//JQUERY $(el).outerWidth(); //js el.offsetWidth
//JQUERY $(el).parent(); //js el.parentNode
//JQUERY $(el).position(); //js {left: el.offsetLeft, top: el.offsetTop}
//JQUERY $(el).prev(); //谷歌瀏覽器,火狐瀏覽器,IE8+ // prevSibling can include text nodes function previousElementSibling(el) { do { el = el.previousSibling; } while ( el && el.nodeType !== 1 ); return el; } el.previousElementSibling || previousElementSibling(el); //谷歌瀏覽器,火狐瀏覽器,IE9+ el.previousElementSibling
//JQUERY $(el).remove(); //js谷歌瀏覽器,火狐瀏覽器,IE8+ el.parentNode.removeChild(el);
//JQUERY $(el).removeClass(className); //js谷歌瀏覽器,火狐瀏覽器,IE8+ if (el.classList) el.classList.remove(className); else el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); //谷歌瀏覽器,火狐瀏覽器,IE10+ el.classList.remove(className);
//JQUERY $(el).replaceWith(string); //谷歌瀏覽器,火狐瀏覽器,IE8+ el.outerHTML = string;
//JQUERY $(el).attr('tabindex', 3); //谷歌瀏覽器,火狐瀏覽器,IE8+ el.setAttribute('tabindex', 3);
//JQUERY $(el).html(string); //谷歌瀏覽器,火狐瀏覽器,IE8+ el.innerHTML = string;
//JQUERY $(el).css('border-width', '20px'); //谷歌瀏覽器,火狐瀏覽器,IE8+ // Use a class if possible el.style.borderWidth = '20px';
//JQUERY $(el).text(string); //谷歌瀏覽器,火狐瀏覽器,IE8+ if (el.textContent !== undefined) el.textContent = string; else el.innerText = string; //谷歌瀏覽器,火狐瀏覽器,IE9+ el.textContent = string;
//JQUERY $(el).siblings(); //谷歌瀏覽器,火狐瀏覽器,IE8+ var siblings = Array.prototype.slice.call(el.parentNode.children); for (var i = siblings.length; i--;) { if (siblings[i] === el) { siblings.splice(i, 1); break; } } //谷歌瀏覽器,火狐瀏覽器,IE9+ Array.prototype.filter.call(el.parentNode.children, function(child){ return child !== el; });
//JQUERY $(el).toggleClass(className); //谷歌瀏覽器,火狐瀏覽器,IE8+ if (el.classList) { el.classList.toggle(className); } else { var classes = el.className.split(' '); var existingIndex = -1; for (var i = classes.length; i--;) { if (classes[i] === className) existingIndex = i; } if (existingIndex >= 0) classes.splice(existingIndex, 1); else classes.push(className); el.className = classes.join(' '); } //谷歌瀏覽器,火狐瀏覽器,IE9+ if (el.classList) { el.classList.toggle(className); } else { var classes = el.className.split(' '); var existingIndex = classes.indexOf(className); if (existingIndex >= 0) classes.splice(existingIndex, 1); else classes.push(className); el.className = classes.join(' '); } //谷歌瀏覽器,火狐瀏覽器,IE10+ el.classList.toggle(className);
//JQUERY $(el).off(eventName, eventHandler); //谷歌瀏覽器,火狐瀏覽器,IE8+ function removeEventListener(el, eventName, handler) { if (el.removeEventListener) el.removeEventListener(eventName, handler); else el.detachEvent('on' + eventName, handler); } removeEventListener(el, eventName, handler); //谷歌瀏覽器,火狐瀏覽器,IE9+ el.removeEventListener(eventName, eventHandler);
//JQUERY $(el).on(eventName, eventHandler); //谷歌瀏覽器,火狐瀏覽器,IE8+ function addEventListener(el, eventName, handler) { if (el.addEventListener) { el.addEventListener(eventName, handler); } else { el.attachEvent('on' + eventName, function(){ handler.call(el); }); } } addEventListener(el, eventName, handler); 谷歌瀏覽器,火狐瀏覽器,IE9+ el.addEventListener(eventName, eventHandler);
//JQUERY $(document).ready(function(){ }); //谷歌瀏覽器,火狐瀏覽器,IE8+ function ready(fn) { if (document.readyState != 'loading'){ fn(); } else if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fn); } else { document.attachEvent('onreadystatechange', function() { if (document.readyState != 'loading') fn(); }); } } //谷歌瀏覽器,火狐瀏覽器,IE9+ function ready(fn) { if (document.readyState != 'loading'){ fn(); } else { document.addEventListener('DOMContentLoaded', fn); }
//JQUERY $(el).trigger('my-event', {some: 'data'}); //js谷歌瀏覽器,火狐瀏覽器,IE9+ if (window.CustomEvent) { var event = new CustomEvent('my-event', {detail: {some: 'data'}}); } else { var event = document.createEvent('CustomEvent'); event.initCustomEvent('my-event', true, true, {some: 'data'}); } el.dispatchEvent(event);
//JQUERY $(el).trigger('change'); //谷歌瀏覽器,火狐瀏覽器,IE8+ if (document.createEvent) { var event = document.createEvent('HTMLEvents'); event.initEvent('change', true, false); el.dispatchEvent(event); } else { el.fireEvent('onchange'); } //谷歌瀏覽器,火狐瀏覽器,IE9+ // For a full list of event types: https://developer.mozilla.org/en-US/docs/Web/API/document.createEvent var event = document.createEvent('HTMLEvents'); event.initEvent('change', true, false); el.dispatchEvent(event);
//JQUERY $.each(array, function(i, item){ }); 谷歌瀏覽器,火狐瀏覽器,IE8+ function forEach(array, fn) { for (i = 0; i < array.length; i++) fn(array[i], i); } forEach(array, function(item, i){ }); //谷歌瀏覽器,火狐瀏覽器,IE9+ array.forEach(function(item, i){ });
//JQUERY $.extend(true, {}, objA, objB); //谷歌瀏覽器,火狐瀏覽器,IE8+ var deepExtend = function(out) { out = out || {}; for (var i = 1; i < arguments.length; i++) { var obj = arguments[i]; if (!obj) continue; for (var key in obj) { if (obj.hasOwnProperty(key)) { if (typeof obj[key] === 'object') deepExtend(out[key], obj[key]); else out[key] = obj[key]; } } } return out; }; deepExtend({}, objA, objB);
//JQUERY $.proxy(fn, context); //谷歌瀏覽器,火狐瀏覽器,IE8+ fn.apply(context, arguments); //谷歌瀏覽器,火狐瀏覽器,IE9+ fn.bind(context);
//jQuery $.extend({}, objA, objB); //谷歌瀏覽器,火狐瀏覽器,IE8+ var extend = function(out) { out = out || {}; for (var i = 1; i < arguments.length; i++) { if (!arguments[i]) continue; for (var key in arguments[i]) { if (arguments[i].hasOwnProperty(key)) out[key] = arguments[i][key]; } } return out; }; extend({}, objA, objB);
//JQUERY $.inArray(item, array); //谷歌瀏覽器,火狐瀏覽器,IE8+ function indexOf(array, item) { for (var i = 0; i < array.length; i++) { if (array[i] === item) return i; } return -1; } indexOf(array, item); 谷歌瀏覽器,火狐瀏覽器,IE9+ array.indexOf(item);
//JQUERY $.isArray(arr); //谷歌瀏覽器,火狐瀏覽器,IE8+ isArray = Array.isArray || function(arr) { return Object.prototype.toString.call(arr) == '[object Array]'; } isArray(arr); //谷歌瀏覽器,火狐瀏覽器,IE9+ Array.isArray(arr);
//JQUERY $.map(array, function(value, index){ }); //js谷歌瀏覽器,火狐瀏覽器,IE8+ function map(arr, fn) { var results = []; for (var i = 0; i < arr.length; i++) results.push(fn(arr[i], i)); return results; } map(array, function(value, index){ }); //谷歌瀏覽器,火狐瀏覽器,IE9+ array.map(function(value, index){ });
//JQUERY $.now(); //谷歌瀏覽器,火狐瀏覽器,IE8+ new Date().getTime(); //谷歌瀏覽器,火狐瀏覽器,IE9+ Date.now();
//JQUERY $.parseHTML(htmlString); 谷歌瀏覽器,火狐瀏覽器,IE8+ var parseHTML = function(str) { var el = document.createElement('div'); el.innerHTML = str; return el.children; }; parseHTML(htmlString); 谷歌瀏覽器,火狐瀏覽器,IE9+ var parseHTML = function(str) { var tmp = document.implementation.createHTMLDocument(); tmp.body.innerHTML = str; return tmp.body.children; }; parseHTML(htmlString);
//JQUERY $.parseJSON(string); //谷歌瀏覽器,火狐瀏覽器,IE8+ JSON.parse(string);
//JQUERY $.trim(string); //谷歌瀏覽器,火狐瀏覽器,IE8+ string.replace(/^\s+|\s+$/g, ''); //谷歌瀏覽器,火狐瀏覽器,IE9+ string.trim();
//JQUERY $.type(obj); 谷歌瀏覽器,火狐瀏覽器,IE8+ Object.prototype.toString.call(obj) .replace(/^\[object (.+)\]$/, "$1") .toLowerCase();
新AJAX方法fetch()css
基本Fetch用法html
讓咱們先用一個例子來比較一下使用 XMLHttpRequest 和使用 fetch 之間的不一樣。咱們要請求一個URL,獲取JSON格式的返回結果。node
原來的XMLHttpRequestweb
一個 XMLHttpRequest 請求須要兩個監聽器來捕捉 success 和 error 兩種情形,並且須要調用 open() 和 send() 方法。ajax
function reqListener() { var data = JSON.parse(this.responseText); console.log(data); } function reqError(err) { console.log('Fetch Error :-S', err); } var oReq = new XMLHttpRequest(); oReq.onload = reqListener; oReq.onerror = reqError; oReq.open('get', './api/some.json', true); oReq.send();
Fetch方法:json
咱們的 fetch 請求的代碼基本上是這樣的:api
fetch('./api/some.json') .then( function(response) { if (response.status !== 200) { console.log('Looks like there was a problem. Status Code: ' + response.status); return; } // Examine the text in the response response.json().then(function(data) { console.log(data); }); } ) .catch(function(err) { console.log('Fetch Error :-S', err); });
用fetch執行表單數據提交瀏覽器
在WEB應用中,提交表單是很是常見的操做,用fetch來提交表單數據也是很是簡潔。cookie
fetch裏提供了 method 和 body 參數選項。app
fetch(url, { method: 'post', headers: { "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" }, body: 'foo=bar&lorem=ipsum' }) .then(json) .then(function (data) { console.log('Request succeeded with JSON response', data); }) .catch(function (error) { console.log('Request failed', error); });
在Fetch請求裏發送用戶身份憑證信息
若是你想在fetch請求裏附帶cookies之類的憑證信息,能夠將 credentials 參數設置成 「include」 值。
fetch(url, { credentials: 'include' })
//JQUERY $.getJSON('/my/url', function(data) { }); //谷歌瀏覽器,火狐瀏覽器,IE8+ var request = new XMLHttpRequest(); request.open('GET', '/my/url', true); request.onreadystatechange = function() { if (this.readyState === 4) { if (this.status >= 200 && this.status < 400) { // Success! var data = JSON.parse(this.responseText); } else { // Error :( } } }; request.send(); request = null; //谷歌瀏覽器,火狐瀏覽器,IE9+ var request = new XMLHttpRequest(); request.open('GET', '/my/url', true); request.onload = function() { if (request.status >= 200 && request.status < 400) { // Success! var data = JSON.parse(request.responseText); } else { // We reached our target server, but it returned an error } }; request.onerror = function() { // There was a connection error of some sort }; request.send(); //谷歌瀏覽器,火狐瀏覽器,IE10+ var request = new XMLHttpRequest(); request.open('GET', '/my/url', true); request.onload = function() { if (this.status >= 200 && this.status < 400) { // Success! var data = JSON.parse(this.response); } else { // We reached our target server, but it returned an error } }; request.onerror = function() { // There was a connection error of some sort }; request.send();
//JQUERY $.ajax({ type: 'POST', url: '/my/url', data: data }); //谷歌瀏覽器,火狐瀏覽器,IE8+ var request = new XMLHttpRequest(); request.open('POST', '/my/url', true); request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); request.send(data);
//JQUERY $.ajax({ type: 'GET', url: '/my/url', success: function(resp) { }, error: function() { } }); //谷歌瀏覽器,火狐瀏覽器,IE8+ var request = new XMLHttpRequest(); request.open('GET', '/my/url', true); request.onreadystatechange = function() { if (this.readyState === 4) { if (this.status >= 200 && this.status < 400) { // Success! var resp = this.responseText; } else { // Error :( } } }; request.send(); request = null; //谷歌瀏覽器,火狐瀏覽器,IE9+ var request = new XMLHttpRequest(); request.open('GET', '/my/url', true); request.onload = function() { if (request.status >= 200 && request.status < 400) { // Success! var resp = request.responseText; } else { // We reached our target server, but it returned an error } }; request.onerror = function() { // There was a connection error of some sort }; request.send(); //谷歌瀏覽器,火狐瀏覽器,IE10+ var request = new XMLHttpRequest(); request.open('GET', '/my/url', true); request.onload = function() { if (this.status >= 200 && this.status < 400) { // Success! var resp = this.response; } else { // We reached our target server, but it returned an error } }; request.onerror = function() { // There was a connection error of some sort }; request.send();
//JQUERY $(el).fadeIn(); //谷歌瀏覽器,火狐瀏覽器,IE8+ function fadeIn(el) { var opacity = 0; el.style.opacity = 0; el.style.filter = ''; var last = +new Date(); var tick = function() { opacity += (new Date() - last) / 400; el.style.opacity = opacity; el.style.filter = 'alpha(opacity=' + (100 * opacity)|0 + ')'; last = +new Date(); if (opacity < 1) { (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16); } }; tick(); } fadeIn(el); //谷歌瀏覽器,火狐瀏覽器,IE9+ function fadeIn(el) { el.style.opacity = 0; var last = +new Date(); var tick = function() { el.style.opacity = +el.style.opacity + (new Date() - last) / 400; last = +new Date(); if (+el.style.opacity < 1) { (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16) } }; tick(); } fadeIn(el); //谷歌瀏覽器,火狐瀏覽器,IE10+ el.classList.add('show'); el.classList.remove('hide'); .show { transition: opacity 400ms; } .hide { opacity: 0; }
//JQUERY $(el).hide(); //谷歌瀏覽器,火狐瀏覽器,IE8+ el.style.display = 'none';
//JQUERY $(el).show(); //谷歌瀏覽器,火狐瀏覽器,IE8+ el.style.display = '';