More than 5 years have passed since last update.
You Don't Need jQuery
泚æãšãé¡ã
ãã®èšäºã®å 容ã¯ãã¯ãå€ãã§ããããã«æžããŠããæ¹æ³ã§ã¯åããªããã®ãããã€ãèŠã€ããŸãããåèã«ããéã¯åäœããã確èªããŠãã䜿ã£ãŠãã ããã
ã²ãšã€ãé¡ãããããŸããããããåããªããããšããã³ãŒããèŠã€ãããæ¯éã³ã¡ã³ããç·šéãªã¯ãšã¹ãã§æããŠãã ãããè§£æ±ºæ¹æ³ãŸã§ãªããŠãçµæ§ã§ãããããã¯ããåããªããããšããå°ãã€ãããã®ã§ãã
ãã®èšäºã¯You Don't Need jQueryã®æ¥æ¬èªèš³ãšåãå 容ã§ãã
å æ¥ã²ãããªããšããYou Don't Need jQueryã®æ¥æ¬èªèš³ããããŠããã ããŸãããèè ã®Cam Songããããã快諟ãããã ããã®ã§1ãQiitaã§ãå ¬éãããŠããã ããŸãã
ãªããæ¬å®¶ã®è±èªã®èª¬æã¯ç¶ç¶çã«ã¡ã³ããããŠããã®ã§ããã®èšäºã®æ å ±ã¯å€ããªã£ãŠããå¯èœæ§ããããŸãã
远èš
ãã®èšäºã¯åœåã¯ãããjQueryã¯å¿
èŠãªãããšããã¿ã€ãã«ã§å
¬éããŠããŸããããã®ã¿ã€ãã«ã«é¢ããŠäžå¿«ã«æãããæ¹ãå€ããããªã®ã§ãã¿ã€ãã«ã倿ŽãããŠããã ããŸããã
äžå¿«ãªæ°åã«ãªãããæ¹ã¯ç³ãèš³ãããŸãããäžç¹ãæèš³ã§ãããããå ããŠå¿ èŠä»¥äžã«ç œãã£ãœããªã£ãŠããŸã£ãã®ã¯ç¿»èš³ã®åé¡ã§ãã®ã§ãã®ç¹ã«é¢ããŠåèè ã«ã¯éã¯ãªãããšããããšã ãè£è¶³ãããŠãã ããã
jQueryã¯å¿ èŠãªãïŒYou Don't Need jQueryïŒ
ããã³ããšã³ãã®éçºç°å¢ã¯ããŸããããé²åããŠããŠãæè¿ã®ãã©ãŠã¶ã§ã¯ååãªè³ªãéã®DOM/BOM APIãå®è£ ãããŠããŸããããDOMæäœãã€ãã³ãåŠçã®ããã«jQueryãèŠããå¿ èŠã¯ãããŸããããŸããReactãAngularãããŠVueãªã©ã®ããã³ããšã³ãã©ã€ãã©ãªã®æµè¡ã«ãããDOMãçŽæ¥æäœããããšã¯ã¢ã³ããã¿ãŒã³ãšãªããŸãããjQueryã¯ããã»ã©éèŠã§ã¯ãªããªã£ãã®ã§ãããã®ãããžã§ã¯ãã¯ãjQueryã§ã®æžãæ¹ã®ä»£ãããšãªããã€ãã£ãã§ã®æžãæ¹(IE10以äž)ããŸãšããŸãã
ç®æ¬¡
- Translations
- ã»ã¬ã¯ã¿
- CSSãšã¹ã¿ã€ã«
- DOMæäœ
- Ajax
- ã€ãã³ã
- ãŠãŒãã£ãªãã£é¢æ°
- Promise
- ã¢ãã¡ãŒã·ã§ã³
- éžæè¢
- 察å¿ãã©ãŠã¶
Translations
- íêµìŽ
- ç®äœäžæ
- Bahasa Melayu
- Bahasa Indonesia
- Português(PT-BR)
- Tiếng Viá»t Nam
- Español
- Ð ÑÑÑкОй
- TÌrkçe
- Italiano
- Français
ã»ã¬ã¯ã¿
classã»ã¬ã¯ã¿ãidã»ã¬ã¯ã¿ã屿§ã»ã¬ã¯ã¿ã®ãããªäž»èŠã»ã¬ã¯ã¿ã¯document.querySelectorãããã¯document.querySelectorAllã§ä»£æ¿ã§ããŸãã
jQueryã®ã»ã¬ã¯ã¿ãšæ¯ã¹ãŠä»¥äžã®éãããããŸãã
-
document.querySelectorã¯ã»ã¬ã¯ã¿ã«ãããããæåã®ãšã¬ã¡ã³ããè¿ã -
document.querySelectorAllã¯ã»ã¬ã¯ã¿ã«ãããããå šãŠã®ãšã¬ã¡ã³ãã®NodeListãè¿ããArray.prototype.slice.call(document.querySelectorAll(selector));ã§é åã«å€æã§ããã - ã»ã¬ã¯ã¿ã«ãããããèŠçŽ ããªãã£ãå ŽåãjQueryãšdocument.querySelectorAllã¯
[]ãè¿ãããdocument.querySelectorã¯nullãè¿ãããããã£ãŠNull Pointer Exceptionã«æ³šæããå¿ èŠãããããããã¯document.querySelector(selector) ||[]ã®ããã«||ã䜿ã£ãŠããã©ã«ãå€ãæå®ããŠããã
泚æïŒ
document.querySelectorãšdocument.querySelectorAllã¯ããªãé ãã§ãããããããã©ãŒãã³ã¹ãå¿ èŠãªãdocument.getElementByIdãdocument.getElementsByClassNameãdocument.getElementsByTagNameã䜿ã£ãŠãã ããã
-
1.0 ã»ã¬ã¯ã¿ã«ããéžæ
// jQuery $('selector'); // Native document.querySelectorAll('selector'); -
1.1 ã¯ã©ã¹åã«ããéžæ
// jQuery $('.class'); // Native document.querySelectorAll('.class'); // or document.getElementsByClassName('class'); -
1.2 idã«ããéžæ
// jQuery $('#id'); // Native document.querySelector('#id'); // or document.getElementById('id'); -
1.3 屿§ã«ããéžæ
// jQuery $('a[target=_blank]'); // Native document.querySelectorAll('a[target=_blank]'); -
1.4 åå«èŠçŽ ã®éžæ
// jQuery $el.find('li'); // Native el.querySelectorAll('li'); -
1.5 å åŒèŠçŽ ã®éžæ
-
å åŒèŠçŽ
// jQuery $el.siblings(); // Native Array.prototype.filter.call(el.parentNode.children, function(child) { return child !== el; }); -
çŽåã®å åŒèŠçŽ
// jQuery $el.prev(); // Native el.previousElementSibling; -
çŽåŸã®å åŒèŠçŽ
// jQuery $el.next(); // Native el.nextElementSibling;
-
-
1.6 ç¥å èŠçŽ ã®éžæ
æå®èŠçŽ ããdocumentæ¹åã«é¡ã£ãŠèµ°æ»ããã»ã¬ã¯ã¿ã«ãããããæåã®ç¥å èŠçŽ ãè¿ããŸãã
// jQuery $el.closest(selector); // Native - æè¿ã®ãã©ãŠã¶ã®ã¿ãIEã§ã¯åããªãã el.closest(selector); // Native - IE10+ function closest(el, selector) { const matchesSelector = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector; while (el) { if (matchesSelector.call(el, selector)) { return el; } else { el = el.parentElement; } } return null; } -
1.7 Parents Until
æå®èŠçŽ ããã»ã¬ã¯ã¿ã«ãããããç¥å èŠçŽ ãŸã§documentæ¹åã«é¡ã£ãŠèµ°æ»ãããã£ã«ã¿ã«ãããããç¥å èŠçŽ ãå šãŠååŸããŸãããã ããã»ã¬ã¯ã¿ã§æå®ãããèŠçŽ ã¯å«ã¿ãŸããã
// jQuery $el.parentsUntil(selector, filter); // Native function parentsUntil(el, selector, filter) { const result = []; const matchesSelector = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector; // parentããèµ°æ»ãéå§ãã el = el.parentElement; while (el && !matchesSelector.call(el, selector)) { if (!filter) { result.push(el); } else { if (matchesSelector.call(el, filter)) { result.push(el); } } el = el.parentElement; } return result; } -
1.8 ãã©ãŒã
-
input/textarea
// jQuery $('#my-input').val(); // Native document.querySelector('#my-input').value; -
.radioå ã§ã®e.currentTargetã®ã€ã³ããã¯ã¹ãè¿ã// jQuery $(e.currentTarget).index('.radio'); // Native Array.prototype.indexOf.call(document.querySelectorAll('.radio'), e.currentTarget);
-
-
1.9 iframeã®ã³ã³ãã³ã
$('iframe').contents()ã¯iframeã®contentDocumentãè¿ããŸãã-
Iframe contents
// jQuery $iframe.contents(); // Native iframe.contentDocument; -
Iframe Query
// jQuery $iframe.contents().find('.css'); // Native iframe.contentDocument.querySelectorAll('.css');
-
-
1.10 bodyãååŸãã
// jQuery $('body'); // Native document.body; -
1.11 屿§ã®èšå®ãååŸ
-
屿§å€ãååŸãã
// jQuery $el.attr('foo'); // Native el.getAttribute('foo'); -
屿§å€ãèšå®ãã
// jQuery, DOMãå€åãããã¡ã¢ãªäžã§åäœããããšã«æ³šæ $el.attr('foo', 'bar'); // Native el.setAttribute('foo', 'bar'); -
data-屿§ãååŸãã// jQuery $el.data('foo'); // Native (`getAttribute`ã䜿ã) el.getAttribute('data-foo'); // Native (IE11以äžã®ãµããŒããªã`dataset`ã䜿ã£ãŠããã) el.dataset['foo'];
-
CSSãšã¹ã¿ã€ã«
-
2.1 CSS
-
ã¹ã¿ã€ã«ãååŸãã
// jQuery $el.css("color"); // Native // NOTE: æ¢ç¥ã®ãã° ããã©ã«ãå€ã'auto'ã®å Žåãå€ãæå®ãããŠããªããŠã'auto'ãè¿ã const win = el.ownerDocument.defaultView; // nullã¯ç䌌èŠçŽ ã§ãªãããšã瀺ããŠãã win.getComputedStyle(el, null).color; -
ã¹ã¿ã€ã«ãèšå®ãã
// jQuery $el.css({ color: "#ff0011" }); // Native el.style.color = '#ff0011'; -
ã¹ã¿ã€ã«ãäžæ¬ååŸãäžæ¬èšå®ãã
è€æ°ã®ã¹ã¿ã€ã«ãäžæ¬ã§èšå®ããããªããoui-dom-utilsã®setStyles颿°ãåèã«ãããšè¯ãã§ãããã
-
ã¯ã©ã¹ã远å ãã
// jQuery $el.addClass(className); // Native el.classList.add(className); -
ã¯ã©ã¹ãåé€ãã
// jQuery $el.removeClass(className); // Native el.classList.remove(className); -
ã¯ã©ã¹ã®æç¡ããã§ãã¯ãã
// jQuery $el.hasClass(className); // Native el.classList.contains(className); -
ã¯ã©ã¹ã®æç¡ãåãæ¿ãã
// jQuery $el.toggleClass(className); // Native el.classList.toggle(className);
-
-
2.2 æšªå¹ ãšé«ã
æšªå¹ (width)ãšé«ã(height)ã®æžãæ¹ã¯ã»ãŒåããªã®ã§ãé«ãïŒheightïŒã®äŸã®ã¿ã瀺ããŸãã
-
ãŠã£ã³ããŠã®é«ã
// window height $(window).height(); // jQueryã®ããã«ã¹ã¯ããŒã«ããŒãé€ããé«ã window.document.documentElement.clientHeight; // ã¹ã¯ããŒã«ããŒãå«ãããªã window.innerHeight; -
ããã¥ã¡ã³ãã®é«ã
// jQuery $(document).height(); // Native document.documentElement.scrollHeight; -
ãšã¬ã¡ã³ãã®é«ã
// jQuery $el.height(); // Native function getHeight(el) { const styles = window.getComputedStyle(el); const height = el.offsetHeight; const borderTopWidth = parseFloat(styles.borderTopWidth); const borderBottomWidth = parseFloat(styles.borderBottomWidth); const paddingTop = parseFloat(styles.paddingTop); const paddingBottom = parseFloat(styles.paddingBottom); return height - borderBottomWidth - borderTopWidth - paddingTop - paddingBottom; } // integerã§ååŸïŒ`border-box`ã®æã¯`height`ãã`content-box`ã®æã¯`height + padding + border`ãè¿ãïŒ el.clientHeight; // decimalã§ååŸïŒ`border-box`ã®æã¯`height`ãã`content-box`ã®æã¯`height + padding + border`ãè¿ãïŒ el.getBoundingClientRect().height;
-
-
2.3 PositionãšOffset
-
Position
offset parentãèµ·ç¹ãšããŠããšã¬ã¡ã³ãã®åº§æšãååŸããã
// jQuery $el.position(); // Native { left: el.offsetLeft, top: el.offsetTop } -
Offset
documentãèµ·ç¹ãšããŠããšã¬ã¡ã³ãã®åº§æšãååŸããã
// jQuery $el.offset(); // Native function getOffset (el) { const box = el.getBoundingClientRect(); return { top: box.top + window.pageYOffset - document.documentElement.clientTop, left: box.left + window.pageXOffset - document.documentElement.clientLeft } }
-
-
2.4 ã¹ã¯ããŒã«äœçœ®
瞊ã¹ã¯ããŒã«ããŒã®äœçœ®ãååŸããã
// jQuery $(window).scrollTop(); // Native (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
DOMæäœ
-
3.1 Remove
DOMãããšã¬ã¡ã³ããåé€ããã
// jQuery $el.remove(); // Native el.parentNode.removeChild(el); -
3.2 Text
-
ããã¹ããååŸãã
åå«ãšã¬ã¡ã³ããå«ããå šããã¹ãå 容ãååŸããã
// jQuery $el.text(); // Native el.textContent; -
ããã¹ããèšå®ãã
ãšã¬ã¡ã³ãã®ã³ã³ãã³ããæå®ãããããã¹ãã«èšå®ããã
// jQuery $el.text(string); // Native el.textContent = string;
-
-
3.3 HTML
-
HTMLãååŸãã
// jQuery $el.html(); // Native el.innerHTML; -
HTMLãèšå®ãã
// jQuery $el.html(htmlString); // Native el.innerHTML = htmlString;
-
-
3.4 Append
æåŸã®åèŠçŽ ãšããŠãšã¬ã¡ã³ãã远å ããã
// jQuery $el.append("<div id='container'>hello</div>"); // Native el.insertAdjacentHTML("beforeend","<div id='container'>hello</div>"); -
3.5 Prepend
æåã®åèŠçŽ ãšããŠãšã¬ã¡ã³ãã远å ããã
// jQuery $el.prepend("<div id='container'>hello</div>"); // Native el.insertAdjacentHTML("afterbegin","<div id='container'>hello</div>"); -
3.6 insertBefore
æå®èŠçŽ ã®åŸãã«æ°ããããŒãã远å ããã
// jQuery $newEl.insertBefore(queryString); // Native const target = document.querySelector(queryString); target.parentNode.insertBefore(newEl, target); -
3.7 insertAfter
æå®èŠçŽ ã®åã«æ°ããããŒãã远å ããã
// jQuery $newEl.insertAfter(queryString); // Native const target = document.querySelector(queryString); target.parentNode.insertBefore(newEl, target.nextSibling); -
3.8 is
ã»ã¬ã¯ã¿ã«ããããããªã
trueãè¿ãã// is颿°ã¯è€æ°ãšã¬ã¡ã³ãã颿°ã«ã察å¿ããããmatches颿°ã¯åäžãšã¬ã¡ã³ãã®ã¿ã«äœ¿ãã $el.is(selector); // Native el.matches(selector); -
3.9 clone
ãšã¬ã¡ã³ãã®ãã£ãŒãã³ããŒãçæããã
// jQuery $el.clone(); // Native el.cloneNode(); // ãã©ã¡ãŒã¿ã«ã¯`true`ãæž¡ãããæ·±ãè€è£œãçæããŸãã // æµ ãè€è£œãçæããã«ã¯ã`false`ãæž¡ããŸãã -
3.10 empty
å šãŠã®åããŒããåé€ããã
// jQuery $el.empty(); // Native el.innerHTML = ''; -
3.11 wrap
ãšã¬ã¡ã³ããæå®ã®HTMLã§å²ãã
// jQuery $('.inner').wrap('<div class="wrapper"></div>'); // Native
ãArray.prototype.slice.call(document.querySelectorAll('.inner')).forEach(function(el){
var wrapper = document.createElement('div');
wrapper.className = 'wrapper';
el.parentNode.insertBefore(wrapper, el);
el.parentNode.removeChild(el);
wrapper.appendChild(el);
});
- [3.12](#3.12) <a name='3.12'></a> unwrap
ã»ã¬ã¯ã¿ã«ããããããšã¬ã¡ã³ãã®èŠªèŠçŽ ãDOMããåé€ãããããããããšã¬ã¡ã³ãèªäœã¯æ®ãã
```js
// jQuery
$('.inner').unwrap();
// Native
Array.prototype.slice.call(document.querySelectorAll('.inner')).forEach(function(el){
Array.prototype.slice.call(el.childNodes).forEach(function(child){
el.parentNode.insertBefore(child, el);
});
el.parentNode.removeChild(el);
});
-
3.13 replaceWith
ã»ã¬ã¯ã¿ã«ããããããšã¬ã¡ã³ãã®å 容ãäžããããå 容ã«çœ®ãæããã
// jQuery $('.inner').replaceWith('<div class="outer"></div>'); // Native Array.prototype.slice.call(document.querySelectorAll('.inner')).forEach(function(el){ var outer = document.createElement('div'); outer.className = 'outer'; el.parentNode.insertBefore(outer, el); el.parentNode.removeChild(el); });
Ajax
Fetch APIã¯XMLHttpRequestã眮ãæããæ°ããªèŠæ Œã§ããChromeãšFirefoxã§åããŸããã¬ã¬ã·ãŒãªãã©ãŠã¶ã§ãpolyfillã䜿ããŸãã
IE9以äžãªãgithub/fetchãIE8以äžãªãfetch-ie8ãjsonpãå©çšããããªãfetch-jsonpã詊ããŠã¿ãŠãã ããã
-
4.1 ããããããšã¬ã¡ã³ãããµãŒãããååŸããHTMLã«çœ®ãæããã
// jQuery $(selector).load(url, completeCallback) // Native fetch(url).then(data => data.text()).then(data => { document.querySelector(selector).innerHTML = data }).then(completeCallback)
ã€ãã³ã
åå空é(namespace)ãšå§è²ïŒdelegationïŒãå©çšããå®å šãªä»£æ¿ææ®µãå¿ èŠãªãã https://github.com/oneuijs/oui-dom-events ãåç §ããŠãã ããã
-
5.0 ããã¥ã¡ã³ããèªã¿èŸŒãŸãããšãã®åäœ(
DOMContentLoaded)// jQuery $(document).ready(eventHandler); // Native // DOMContentLoadedããã§ã«å®äºããŠããªãã確èªãã if (document.readyState !== 'loading') { eventHandler(); } else { document.addEventListener('DOMContentLoaded', eventHandler); } -
5.1 ã€ãã³ãããã€ã³ããã(
on)// jQuery $el.on(eventName, eventHandler); // Native el.addEventListener(eventName, eventHandler); -
5.2 ã€ãã³ããã¢ã³ãã€ã³ããã(
off)// jQuery $el.off(eventName, eventHandler); // Native el.removeEventListener(eventName, eventHandler); -
5.3 ã€ãã³ããçºç«ããã(
trigger)// jQuery $(el).trigger('custom-event', {key1: 'data'}); // Native if (window.CustomEvent) { const event = new CustomEvent('custom-event', {detail: {key1: 'data'}}); } else { const event = document.createEvent('CustomEvent'); event.initCustomEvent('custom-event', true, true, {key1: 'data'}); } el.dispatchEvent(event);
ãŠãŒãã£ãªãã£é¢æ°
æ®ã©ã®ãŠãŒãã£ãªãã£é¢æ°ã¯ãã€ãã£ãã®APIã§çœ®ãæããããšãã§ããŸãã衚èšã®äžè²«æ§ãããã©ãŒãã³ã¹ãéèŠããä»ã®ã©ã€ãã©ãªã䜿ãéžæè¢ããããŸããlodashãããããã§ãã
-
6.1 åºæ¬çãªãŠãŒãã£ãªãã£é¢æ°
- isArray
é åãã©ããå€å®ããã
// jQuery $.isArray(array); // Native Array.isArray(array);- isWindow
windowãã©ããå€å®ããã
// jQuery $.isWindow(obj); // Native function isWindow(obj) { return obj != null && obj === obj.window; }- inArray
é åã®äžã§ãæå®ãããå€ãæåã«çŸããã€ã³ããã¯ã¹ãè¿ããïŒèŠã€ãããªããã°-1ãè¿ãïŒã
// jQuery $.inArray(item, array); // Native Array.indexOf(item);- isNumeric
æ°å€ãã©ããå€å®ããã
typeofã䜿ã£ãŠãã ãããã©ã€ãã©ãªã䜿ãå Žåãtypeofã¯æ£ç¢ºã§ãªãå ŽåããããŸãã// jQuery $.isNumeric(item); // Native function isNumeric(item) { return typeof item === 'number'; }- isFunction
JavaScript颿°ãªããžã§ã¯ããã©ããå€å®ããã
// jQuery $.isFunction(item); // Native function isFunction(item) { return typeof item === 'function'; }- isEmptyObject
空ã®ãªããžã§ã¯ãã§ããïŒåæã§ããèŠçŽ ããªãïŒãå€å®ããã
// jQuery $.isEmptyObject(obj); // Native function isEmptyObject(obj) { for (let key in obj) { return false; } return true; }- isPlainObject
{}ãããã¯new Objectã§çæããããªããžã§ã¯ãã§ãããå€å®ããã// jQuery $.isPlainObject(obj); // Native function isPlainObject(obj) { if (typeof (obj) !== 'object' || obj.nodeType || obj != null && obj === obj.window) { return false; } if (obj.constructor && !{}.hasOwnProperty.call(obj.constructor.prototype, 'isPrototypeOf')) { return false; } return true; }- extend
äºã€ä»¥äžã®ãªããžã§ã¯ããããŒãžããã
object.assignã¯ECMAScript6ã®APIã§ãããpolyfillãå©çšã§ããŸãã// jQuery $.extend({}, defaultOpts, opts); // Native Object.assign({}, defaultOpts, opts);- trim
ååŸã®ç©ºçœãé€å»ããã
// jQuery $.trim(string); // Native string.trim();- map
é åããªããžã§ã¯ããæ°ããé åã«å€æããã
// jQuery $.map(array, function(value, index) { }); // Native array.map(function(value, index) { });- each
é åããªããžã§ã¯ãã«å¯ŸããŠç¹°ãè¿ãåŠçãè¡ãã
// jQuery $.each(array, function(value, index) { }); // Native array.forEach(function(value, index) { });- grep
ãã£ã«ã¿ãŒé¢æ°ã«åèŽãããšã¬ã¡ã³ãã ããè¿ãã
// jQuery $.grep(array, function(value, index) { }); // Native array.filter(function(value, index) { });- type
JavaScriptãã¯ã©ã¹ãåãå€å®ããŸãã
// jQuery $.type(obj); // Native Object.prototype.toString.call(obj).replace(/^\[object (.+)\]$/, '$1').toLowerCase();- merge
äºã€ã®é åãããŒãžããã
// jQuery $.merge(array1, array2); // Native // éè€ããèŠçŽ ã¯åé€ãããªã function merge() { return Array.prototype.concat.apply([], arguments) }- now
çŸåšã®æå»ãè¿ãã
// jQuery $.now(); // Native Date.now();- proxy
颿°å ã§å®è¡ãããthisãä»»æã®ãªããžã§ã¯ãã«å€æŽããã
// jQuery $.proxy(fn, context); // Native fn.bind(context);- makeArray
é å圢åŒã®ãªããžã§ã¯ããé åã«å€æããã
// jQuery $.makeArray(arrayLike); // Native Array.prototype.slice.call(arrayLike); // ES6ãªã Array.from(arrayLike); -
6.2 contains
ããèŠçŽ ãä»ã®èŠçŽ ã®åå«ã§ãããå€å®ããã
// jQuery $.contains(el, child); // Native el !== child && el.contains(child); -
6.3 globaleval
JavaScriptã³ãŒããã°ããŒãã«ç©ºéã§å®è¡ããã
// jQuery $.globaleval(code); // Native function Globaleval(code) { let script = document.createElement('script'); script.text = code; document.head.appendChild(script).parentNode.removeChild(script); } // evalã¯currentã³ã³ããã¹ãã§å®è¡ãããã$.globalevalã®ã³ã³ããã¹ãã¯ã°ããŒãã«ã§ããã eval(code); -
6.4 parse
- parseHTML
æååãDOM nodeã®é åãšããŠè¿ããŸãã
// jQuery $.parseHTML(htmlString); // Native function parseHTML(string) { const tmp = document.implementation.createHTMLDocument(); tmp.body.innerHTML = string; return tmp.body.children; }- parseJSON
JSONæååãJavaScriptã«å€æããŸãã
// jQuery $.parseJSON(str); // Native JSON.parse(str);
Promise
promiseã¯éåæåŠçã®æçµçãªåŠççµæã衚ããŸããjQueryã«ã¯promiseãæ±ãããã®ç¬èªã®æ¹æ³ããããŸãããã€ãã£ãã®JavaScriptã§ã¯Promises/A+èŠæ Œã«åããèããæå°éã®APIãå®è£ ããŠããŸãã
-
7.1 done, fail, always
doneã¯promiseãæå(resolved)ãããšããfallã¯å€±æ(rejected)ãããšããalwaysã¯ã©ã¡ãã®å ŽåãåŒã³åºãããŸãã// jQuery $promise.done(doneCallback).fail(failCallback).always(alwaysCallback) // Native promise.then(doneCallback, failCallback).then(alwaysCallback, alwaysCallback) -
7.2 when
whenã¯è€æ°ã®promiseãæ±ããšãã«äœ¿ããŸãããã¹ãŠã®promiseã®çµæãè¿ã£ããšãã«æåãšãªããŸãïŒå€±æãå«ãŸããŠãŠãæåãšãªããŸãïŒã// jQuery $.when($promise1, $promise2).done((promise1Result, promise2Result) => {}) // Native Promise.all([$promise1, $promise2]).then([promise1Result, promise2Result] => {}); -
7.3 Deferred
Deferredã¯promiseãäœæããæ¹æ³ã®äžã€ã§ãã// jQuery function asyncFunc() { var d = new $.Deferred(); setTimeout(function() { if(true) { d.resolve('some_value_compute_asynchronously'); } else { d.reject('failed'); } }, 1000); return d.promise(); } // Native function asyncFunc() { return new Promise((resolve, reject) => { setTimeout(function() { if (true) { resolve('some_value_compute_asynchronously'); } else { reject('failed'); } }, 1000); }); } // Deferred way function defer() { let resolve, reject; let promise = new Promise(function() { resolve = arguments[0]; reject = arguments[1]; }); return { resolve, reject, promise }; } function asyncFunc() { var d = defer(); setTimeout(function() { if(true) { d.resolve('some_value_compute_asynchronously'); } else { d.reject('failed'); } }, 1000); return d.promise; }
ã¢ãã¡ãŒã·ã§ã³
-
8.1 showãhide
// jQuery $el.show(); $el.hide(); // Native // show颿°ã®è©³çްãèŠãããã°æ¬¡ã®URLãåç §ããŠãã ãã // https://github.com/oneuijs/oui-dom-utils/blob/master/src/index.js#L363 el.style.display = ''|'inline'|'inline-block'|'inline-table'|'block'; el.style.display = 'none'; -
8.2 toggle
ãšã¬ã¡ã³ãã衚瀺ãããŠããªããªã衚瀺ãã衚瀺ãããŠãããªãé衚瀺ã«ããŸãã
!!2018-12-25 Chrome ããŒãžã§ã³: 71.0.3578.98ã§åäœããªãããšã確èª
// jQuery $el.toggle(); // Native if (el.ownerDocument.defaultView.getComputedStyle(el, null).display === 'none') { el.style.display = ''|'inline'|'inline-block'|'inline-table'|'block'; } else { el.style.display = 'none'; } -
8.3 fadeInãfadeOut
// jQuery $el.fadeIn(3000); $el.fadeOut(3000); // Native el.style.transition = 'opacity 3s'; // fadeIn el.style.opacity = '1'; // fadeOut el.style.opacity = '0'; -
8.4 fadeTo
ãšã¬ã¡ã³ãã®opacityã調æŽããŠãã ããã
// jQuery $el.fadeTo('slow',0.15); // Native el.style.transition = 'opacity 3s'; // 'slow'ã¯3ç§ã ãšããããšã«ããŠãã el.style.opacity = '0.15'; -
8.5 fadeToggle
ãã§ãŒãã€ã³ã»ãã§ãŒãã¢ãŠãã䌎ã£ãŠãšã¬ã¡ã³ãã®è¡šç€ºã»é衚瀺ãåãæ¿ããŸãã
// jQuery $el.fadeToggle(); // Native el.style.transition = 'opacity 3s'; let { opacity } = el.ownerDocument.defaultView.getComputedStyle(el, null); if (opacity === '1') { el.style.opacity = '0'; } else { el.style.opacity = '1'; } -
8.6 ã¹ã©ã€ãã¢ãããã¹ã©ã€ãããŠã³
// jQuery $el.slideUp(); $el.slideDown(); // Native let originHeight = '100px'; el.style.transition = 'height 3s'; // slideUp el.style.height = '0px'; // slideDown el.style.height = originHeight; -
8.7 slideToggle
ã¹ã©ã€ãã䌎ã£ãŠããšã¬ã¡ã³ãã®è¡šç€ºã»é衚瀺ãåãæ¿ããŸãã
// jQuery $el.slideToggle(); // Native let originHeight = '100px'; el.style.transition = 'height 3s'; let { height } = el.ownerDocument.defaultView.getComputedStyle(el, null); if (parseInt(height, 10) === 0) { el.style.height = originHeight; } else { el.style.height = '0px'; } -
8.8 animate
CSSããããã£ã§å®çŸ©ãããã¢ãã¡ãŒã·ã§ã³ã衚瀺ããŸãã
// jQuery $el.animate({params}, speed); // Native el.style.transition = 'all' + speed; Object.keys(params).forEach(function(key) { el.style[key] = params[key]; })
éžæè¢
- You Might Not Need jQuery - ãã€ãã£ãã®JavaScriptã§ã€ãã³ãããšã¬ã¡ã³ããAjaxãæ±ããµã³ãã«é(è±èª)
- npm-dom and webmodules - npmã§å©çšã§ããDOMã¢ãžã¥ãŒã«ãéããOrganizationã§ã
察å¿ãã©ãŠã¶
| ð Chrome |
ð Firefox |
ð IE |
ð Opera |
ð Safari |
|---|---|---|---|---|
| Latest â | Latest â | 10+ â | Latest â | 6.1+ â |
ã©ã€ã»ã³ã¹
MIT
-
ããã¡ãããMITã©ã€ã»ã³ã¹ãªãã ãã奜ãã«ããŠãããããšã®ããšããã£ãããïŒ â©
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
