JQueryã¯çŸåšãDOMãæäœããããã®äºå®äžã®ã©ã€ãã©ãªã§ãã äžè¬çãªMV *ãã¬ãŒã ã¯ãŒã¯ïŒBackboneãªã©ïŒãšäžç·ã«äœ¿çšã§ããå€ãã®ãã©ã°ã€ã³ãšéåžžã«å€§ããªã³ãã¥ããã£ããããŸãã äžæ¹ãJavaScriptã®äººæ°ãé«ãŸã£ãŠãããå€ãã®éçºè
ã¯ãæšæºAPIãã©ã®ããã«æ©èœããè¿œå ã®ã©ã€ãã©ãªãè¿œå ããã«åçŽã«äœ¿çšã§ããã®ãçåã«æã£ãŠããŸãã
jQueryã䜿çšããŠããæ«æã«ããã®ã©ã€ãã©ãªã«ããŸããŸãªåé¡ãããããšã«æ°ä»ãå§ããŸããã ãããã®ã»ãšãã©ã¯åºæ¬çãªãã®ã§ãããããäžäœäºææ§ã倱ãããšãªãä¿®æ£ããããšã¯ã§ããŸãããããã¯ãã¡ããéèŠã§ãã ç§ã¯ãä»ã®å€ãã®äººãšåãããã«ãã©ã€ãã©ãªããã°ãã䜿çšãç¶ããè¿·æãªçã«æ¯æ¥äŒããŸããã
ãã®åŸã
ãããšã«ã»ããããŒã
SelectorListenerãäœæããã©ã€ãæ¡åŒµæ©èœã®ã¢ã€ãã¢ãçãŸããŸããã ããè¯ãã¢ãããŒãã䜿çšããŠãç®ç«ããç¬ç«ããDOMã³ã³ããŒãã³ããäœæã§ããæ©èœã»ããã®äœæã«ã€ããŠèãå§ããŸããã ã¿ã¹ã¯ã¯ãæ¢åã®ãœãªã¥ãŒã·ã§ã³ãã¬ãã¥ãŒããããç解ããããããã¹ãå¯èœã§ãå°ãããªãããèªçµŠèªè¶³ã®ã©ã€ãã©ãªãäœæããããšã§ããã
ã©ã€ãã©ãªã«äŸ¿å©ãªæ©èœãè¿œå ãã
ã©ã€ãæ¡åŒµæ©èœã®ã¢ã€ãã¢ã¯
ãbetter-domãããžã§ã¯ãã®éçº
ã«è²¢ç®ããŸãããããã以å€ã«ãã©ã€ãã©ãªããŠããŒã¯ã«ããèå³æ·±ãæ©èœããããŸãã ããããç°¡åã«èŠãŠã¿ãŸãããã
- ã©ã€ããšã¯ã¹ãã³ã·ã§ã³
- ãã€ãã£ãã¢ãã¡ãŒã·ã§ã³
- çµã¿èŸŒã¿ãã³ãã¬ãŒããšã³ãžã³
- åœéåãµããŒã
ã©ã€ãæ¡åŒµæ©èœ
jQueryã«ã¯ãã©ã€ãã€ãã³ãã®æŠå¿µããããŸãã èå°è£ã§ã¯ãã€ãã³ãå§ä»»ã䜿çšããŠãæ¢åããã³å°æ¥ã®èŠçŽ ãåŠçããŸãã ãã ããå€ãã®å Žåãããé«ãæè»æ§ãå¿
èŠã§ãã ããšãã°ãåæåäžã«ãŠã£ãžã§ãããæ¢åã®èŠçŽ ãšå¯Ÿè©±ãŸãã¯çœ®æããè¿œå èŠçŽ ãããã¥ã¡ã³ãããªãŒã«è¿œå ããå¿
èŠãããå Žåãã©ã€ãã€ãã³ãã¯æ©èœããŸããã ãã®åé¡ã解決ããããã«ãã©ã€ãæ¡åŒµæ©èœã玹ä»ããŸãã
ç®æšã¯ãæ¡åŒµæ©èœãäžåºŠå®£èšãããã®åŸããŠã£ãžã§ããã®è€éãã«é¢ä¿ãªãå°æ¥ã®ã³ã³ãã³ãã§æ©èœããããã«ããããšã§ãã ããã¯ãWebããŒãžã宣èšçã«äœæã§ãããããAJAXã¢ããªã±ãŒã·ã§ã³ã«é©ããŠãããããéèŠãªæ©èœã§ãã
ç°¡åãªäŸãèããŠã¿ãŸãããã ç§ãã¡ã®ã¿ã¹ã¯ã¯ãå®å
šã«ã«ã¹ã¿ãã€ãºå¯èœãªããŒã«ããããå®è£
ããããšã ãšããŸãããã
:hover
ç䌌ã»ã¬ã¯ã¿ãŒ
:hover
ãããŠã¹ã«ãŒãœã«ã«å¿ããŠããŒã«ãããã®äœçœ®ãå€ãããããé©åã§
:hover
ãŸããã ã€ãã³ãã®å§ä»»ãé©åã§ã¯ãããŸãããããŒãžäžã®ãã¹ãŠã®èŠçŽ ã®
mouseover
ãš
mouseover
mouseleave
ãèãã«ã¯é«ãããŸãã ãããã©ã€ããšã¯ã¹ãã³ã·ã§ã³ãç»å Žããå Žæã§ãã
DOM.extend("[title]", { constructor: function() { var tooltip = DOM.create("span.custom-title");
CSSã®
.custom-title
ã»ã¬ã¯ã¿ãŒã䜿çšããŠãããŒã«ãããã®ã¹ã¿ã€ã«ãèšå®ã§ããããã«ãªããŸããã
.custom-title { position: fixed; border: 1px solid #faebcc; background: #faf8f0; }
ãã ãã
title
å±æ§ãæã€æ°ããèŠçŽ ãããŒãžã«è¿œå ããããšã楜ããéšåãå§ãŸããŸãã ãããã¯
ãåæåé¢æ°ãåŒã³åºããã«æ¡åŒµæ©èœã«ãã£ãŠååŸãã
ãŸã ã
ã©ã€ãæ¡åŒµæ©èœã¯èªçµŠèªè¶³åã§ãããããå°æ¥ã®ã³ã³ãã³ããæäœããããã«ç¹å®ã®æ©èœã䜿çšããå¿
èŠã¯ãããŸããã ãããã£ãŠ
ãDOMã®æ¢åã®ã©ã€ãã©ãªãšçµã¿åãã㊠ãUIã³ãŒããå€ãã®å°ããªç¬ç«ããéšåã«åå²ããããšã«ãããã¢ããªã±ãŒã·ã§ã³ããžãã¯ãç°¡çŽ åã§ããŸãã
çµè«ãšããŠã
Webã³ã³ããŒãã³ãã«é¢ããããã€ãã®èšèã ã
ãã³ã¬ãŒã¿ ããšåŒã°ããä»æ§ã®1ã€ããã³ã»ã¯ã·ã§ã³ã¯ãåæ§ã®åé¡ã解決ããããã«èšèšãããŠããŸãã çŸåšãããŒã¯ã¢ãããšç¹å¥ãªæ§æã䜿çšããŠããªã¹ããŒãåã«ãã³ã°ãããŸãã ããããããã¯ãŸã éåžžã«åæã®ãã©ããã§ãã
ãã³ã¬ãŒã¿ã¯ãWebã³ã³ããŒãã³ãã®ä»ã®ã»ã¯ã·ã§ã³ãšã¯ç°ãªãããŸã ä»æ§ããããŸããã
ãã€ãã£ãã¢ãã¡ãŒã·ã§ã³
Appleã®ããã㧠ãCSSã¯çŸåšã
åªããã¢ãã¡ãŒã·ã§ã³ããµããŒãããŠããŸãã 以åã¯ãã¢ãã¡ãŒã·ã§ã³ã¯
setInterval
ãš
setTimeout
ã䜿çšããŠJavaScriptã§å®è£
ãããŠããŸããã ããã¯ã¯ãŒã«ãªããšã§ããããä»...å°ãæªãç¿æ
£ã ãã€ãã£ãã¢ãã¡ãŒã·ã§ã³ã¯åžžã«ããã¹ã ãŒãºã«ãªããŸããéåžžã¯é«éã§æ¶è²»é»åãå°ãªãããµããŒãããŠããªããã©ãŠã¶ã«ã¯è¡šç€ºãããŸããã
better-domã«ã¯
animate
ã¡ãœããã¯ãããŸããïŒ
show
ã
hide
ããã³
toggle
ã®ã¿ã§ãã CSSã§é衚瀺èŠçŽ ã®ç¶æ
ããã£ããã£ããããã«ãã©ã€ãã©ãªã¯æšæºåããã
aria-hidden
å±æ§ã䜿çšããŸãã
ã¢ãããŒãã説æããããã«ãåã«æžããç°¡åãªããŒã«ãããã¢ãã¡ãŒã·ã§ã³ãè¿œå ããŸãããã
.custom-title { position: fixed; border: 1px solid #faebcc; background: #faf8f0; opacity: 1; -webkit-transition: opacity 0.5s; transition: opacity 0.5s; } .custom-title[aria-hidden=true] { opacity: 0; }
show
ãš
hide
å
éš
hide
ã
aria-hidden
å±æ§ã¯ãã®å€ã
false
ãŸãã¯
true
å€æŽããŸãã CSSã䜿çšããŠã¢ãã¡ãŒã·ã§ã³ã衚瀺ããã«ã¯ããã§ååã§ãã
ããè¯ãdomãåããããå€ãã®ã¢ãã¡ãŒã·ã§ã³ã®äŸãçµã¿èŸŒã¿ã®ãã³ãã¬ãŒããšã³ãžã³
HTMLæååã¯ããã°ããŸãã 代æ¿åãæ¢ãå§ãããšããçŽ æŽããã
Emmetãããžã§ã¯ããèŠã€ããŸããã çŸåšãããã¹ããšãã£ã¿ãŒã®ãã©ã°ã€ã³ãšããŠéåžžã«äººæ°ããããç°¡æœã§ã³ã³ãã¯ããªæ§æãæã£ãŠããŸãã æ¯èŒããïŒ
body.append("<ul><li class='list-item'></li><li class='list-item'></li><li class='list-item'></li></ul>");
åçã§ã
body.append("ul>li.list-item*3");
ããè¯ãæ¹æ³ã§ã¯ãåŒæ°ãšããŠHTMLæååãåãå
¥ããã¡ãœããã¯ããšã¡ããã®ç¥èªããµããŒãããŸãã
ç¥èªããŒãµãŒã¯é«éãªã®ã§ãããã©ãŒãã³ã¹ã®äœäžãå¿é
ããå¿
èŠã¯ãããŸããã
ãã³ãã¬ãŒããããªã³ã³ãã€ã«ãã
æ©èœããããå¿
èŠã«å¿ããŠäœ¿çšã§ããŸãã
åœéåãµããŒã
UIãŠã£ãžã§ããã®èšèšã«ã¯ããŒã«ãªãŒãŒã·ã§ã³ãå¿
èŠã«ãªãããšããããããŸãããããã¯å¿
ãããç°¡åãªäœæ¥ã§ã¯ãããŸããã å€ãã®äººããã®åé¡ãç¬èªã®æ¹æ³ã§è§£æ±ºããŸããã ããè¯ãdomã§ã¯
ãèšèªã
å€æŽããããšã¯CSSã»ã¬ã¯ã¿ãŒã®ç¶æ
ãå€æŽããããšããé£ãããªãããšãé¡ã£ãŠããŸãã
ã€ããªãã®ãŒã®èŠ³ç¹ããèŠããšãèšèªã®åãæ¿ãã¯ã³ã³ãã³ãã®ã衚瀺ããå€æŽãããããªãã®ã§ãã CSS2ã«ã¯ããã®ãããªã¢ãã«ã®èª¬æã«åœ¹ç«ã€ããã€ãã®ç䌌ã»ã¬ã¯ã¿ãŒ
:lang
and
:before
ãŸãã 以äžã®ã³ãŒããã芧ãã ããã
[data-i18n="hello"]:before { content: "Hello Maksim!"; } [data-i18n="hello"]:lang(ru):before { content: " !"; }
ç§Theã¯ã
content
ããããã£ãçŸåšã®èšèªã«åŸã£ãŠå€åããããšã§ããããã¯ã
html
èŠçŽ ã®
lang
å±æ§ã®å€ã«ãã£ãŠæ±ºãŸããŸãã
data-i18n
å±æ§ã䜿çšããŠãããäžè¬çãªè¡šèšã䜿çšã§ããŸãã
[data-i18n]:before { content: attr(data-i18n); } [data-i18n="Hello Maksim!"]:lang(ru):before { content: " !"; }
ãã¡ããããã®ãããªCSSã³ãŒãã¯èŠæ ãããããªããããbetter-domã«ã¯2ã€ã®
DOM.importStrings
i18n
ãš
DOM.importStrings
ãŸãã 1ã€ç®ã¯
data-i18n
å±æ§ã察å¿ããå€ã§æŽæ°ããããã«äœ¿çšããã2ã€ç®ã¯ç¹å®ã®èšèªã®æååãããŒã«ã©ã€ãºããŸãã
label.i18n("Hello Maksim!");
ãã©ã¡ãŒã¿åãããæååããµããŒããããŠããŸãïŒããŒæååã«
${param}
å€æ°ãè¿œå ããã ãã§ãïŒ
label.i18n("Hello ${user}!", {user: "Maksim"});
ãã€ãã£ãAPIã®æ¹å
éåžžãæšæºãéµå®ããããšèããŠããŸãã ããããæã
ãæšæºã¯å®å
šã«å奜çã§ã¯ãããŸããã DOMã¯éåžžã«çŽããããããã䟿å©ã«ããã«ã¯ã䟿å©ãªAPIã§ã©ããããå¿
èŠããããŸãã ããŸããŸãªã©ã€ãã©ãªãŒã«ãã£ãŠå€ãã®æ¹åãè¡ãããŸããããããã€ãã®æ¹åãè¡ãããšãã§ããŸãã
- ã²ãã¿ãŒãšã»ãã¿ãŒ
- ã€ãã³ãåŠçã®æ¹å
- æ©èœçã¡ãœããã®ãµããŒã
ã²ãã¿ãŒãšã»ãã¿ãŒ
ãã€ãã£ãDOMã«
ã¯ãç°ãªãåäœãå¯èœ
ãªèŠçŽ ã®å±æ§ãšããããã£ã®æŠå¿µããããŸã ã ããŒãžã«ããŒã¯ã¢ããããããšããŸãïŒ
<a href="/chemerisuk/better-dom" id="foo" data-test="test">better-dom</a>
ãã€ãã£ãDOMã®æµæã説æããããã«ãå°ãæäœããŠã¿ãŸãããã
var link = document.getElementById("foo"); link.href;
ãã®ãã
ãå±æ§å€ã¯ HTMLã®å¯Ÿå¿ããè¡
ãšçãããªã
ãŸãã ãåãååã®
èŠçŽ ã®
ããããã£ã¯ ãããšãã°äžèšã®äŸã§å®å
šãªURLãçæãããªã©ãç¹å¥ãªåäœãããå ŽåããããŸãã ãã®éãã¯æã
æ··ä¹±ããå¯èœæ§ããããŸãã
å®éã«ã¯ããã®ãããªåé¢ããã€åœ¹ç«ã€ãæ³åããã®ã¯å°é£ã§ãã ããã«ãéçºè
ã¯ã䜿çšããŠããå€ãåžžã«ç£èŠããå¿
èŠããããããäžå¿
èŠãªè€éããå¢ããŸãã
åªããç¹ã§ã¯ãç©äºã¯ããåçŽã§ãã
åèŠçŽ ã«ã¯ã¹ããŒããªã²ãã¿ãŒãšã»ãã¿ãŒã®ã¿ããããŸãã
var link = DOM.find("#foo"); link.get("href");
æåã®ã¹ãããã§ãã¡ãœããã¯èŠçŽ ã®ããããã£ãæ€çŽ¢ããå®çŸ©ãããŠããå Žåã¯æäœã«äœ¿çšããŸãã ãã以å€ã®å Žåã¯ã察å¿ããå±æ§ã§æ©èœããŸãã ããŒã«å±æ§ïŒ
checked
ã
selected
ãªã©ïŒã®å Žåãåã«
true
ãŸãã¯
false
䜿çšã§ã
false
ã èŠçŽ ã®ãããã®ããããã£ãå€æŽãããšã察å¿ããå±æ§ãæŽæ°ãããŸãïŒãã€ãã£ãã®åäœïŒã
ã€ãã³ãåŠçã®æ¹å
ã€ãã³ãåŠçã¯ãDOMã®ã³ãŒãã£ã³ã°ã®éèŠãªéšåã§ãã ç§ãçºèŠããæ ¹æ¬çãªåé¡ã®1ã€ã¯ãèŠçŽ ãªã¹ããŒã«ã€ãã³ããªããžã§ã¯ããååšããããããã¹ã察象ã®ã³ãŒãã奜ããªéçºè
ãæåã®åŒæ°ããŠã§ããã«ãããããã®ãã³ãã©ãŒã§äœ¿çšãããã€ãã³ãããããã£ãåãå
¥ããè¿œå é¢æ°ãäœæããããšã§ãã
var button = document.getElementById("foo"); button.addEventListener("click", function(e) { handleButtonClick(e.button); }, false);
ããã«ãããå®éã«äœåãªé¢æ°åŒã³åºããçºçããè¿œå ãããŸãã å€åããéšåãåŒæ°ãšããŠåŒ·èª¿ãããšã©ããªãã§ãããããããã¯ã¯ããŒãžã£ãŒãåãé€ããŸãïŒ
var button = DOM.find("#foo"); button.on("click", handleButtonClick, ["button"]);
ããã©ã«ãã§ã¯ãã€ãã³ããã³ãã©ãŒã¯é
å
["target", "defaultPrevented"]
ããããããã®ããããã£ãèªã¿åãããã«æåŸã®åŒæ°ãè¿œå ããå¿
èŠã¯ãããŸããã
button.on("click", function(target, canceled) {
é
延ãã€ã³ãã£ã³ã°ããµããŒããããŠããŸã ïŒ
ãããã¯ã«é¢ããPeter Michauxã®èšäºãèªãããšããå§ã
ããŸã ïŒã ããã¯ãå¶ç¶
ã«ãæšæºã«ååšããåŸæ¥ã®ã€ãã³ããã³ãã©ã«å¯Ÿããããæè»ãªä»£æ¿æ段ã§ãã
on
ã¡ãœãããš
off
ã¡ãœãããé »ç¹ã«åŒã³åºãå¿
èŠãããå Žåã«åœ¹ç«ã¡ãŸãã
button._handleButtonClick = function() { alert("click!"); }; button.on("click", "_handleButtonClick"); button.fire("click");
çµè«ãšããŠãæšæºã§ã¯ååšãããã©ãŠã¶ãŒã§ç°ãªãåäœããã
click()
ã
focus()
ã
submit()
ãªã©ã®ã¡ãœããã¯ãããŸããã ããããåŒã³åºãå¯äžã®æ¹æ³ã¯ã
fire
ã¡ãœããã䜿çšããããšã§ãããã®ã¡ãœããã¯ãã©ã®ãã³ãã©ãŒã
false
è¿ããªãå Žåã«ããã©ã«ãã®åäœãå®è¡ããŸãã
link.fire("click");
æ©èœçã¡ãœããã®ãµããŒã
ES5ã¯ã
map
ã
filter
ã
some
ãªã©ã®é
åã®ããã€ãã®äŸ¿å©ãªã¡ãœãããæšæºåããŸããã æšæºåãããæ¹æ³ã§ã³ã¬ã¯ã·ã§ã³ã®æäœãå®è¡ã§ããŸãã ãã®çµæãä»æ¥ã§ã¯ã
ã¢ã³ããŒã¹ã³ã¢ã
Lo-Dashã®ãããªãããžã§ã¯ããããããããã®ã¡ãœãããå€ããã©ãŠã¶ã§äœ¿çšã§ããŸãã
better-domã®åèŠçŽ ïŒãŸãã¯ã³ã¬ã¯ã·ã§ã³ïŒã«ã¯ãããã«äœ¿çšã§ãã以äžã®ã¡ãœããããããŸãã
each
ïŒ forEach
ãšã¯ç°ãªãã undefined
ã§ã¯ãªãthis
ãè¿ããŸãïŒsome
every
map
filter
reduce[Right]
var urls, activeLi, linkText; urls = menu.findAll("a").map(function(el) { return el.get("href"); }); activeLi = menu.children().filter(function(el) { return el.hasClass("active"); }); linkText = menu.children().reduce(function(memo, el) { return memo || el.hasClass("active") && el.find("a").get() }, false);
jQueryã®åé¡ã解決ãã
以äžã®åé¡ã®ã»ãšãã©ã¯ãåŸæ¹äºææ§ã倱ããã«jQueryã§ä¿®æ£ããããšã¯ã§ããŸããã æ°ããã©ã€ãã©ãªãäœæããããšã決å®ããããã1ã€ã®çç±ã
$
ããžãã¯æ©èœ- 倧æ¬åŒ§æŒç®åå€
return false
ãreturn false
åé¡find
ãšfindAll
$ããžãã¯æ©èœ
é¢æ°
$
ïŒãã«ïŒããéæ³ãã§ããããšã¯èª°ããèããããšãããã§ãããã 1æåã®ã¿ã§æ§æãããååã¯ããŸãæ確ã§ã¯ãªããé¢æ°ã¯èšèªã«çµã¿èŸŒãŸããã¹ããŒãã¡ã³ãã®ããã«èŠããŸãã ããããçµéšã®æµ
ãéçºè
ãå¿
èŠãªå Žæã§åçŽã«åŒã³åºãçç±ã§ãã
èå°è£ã§ã¯ã
$
ã¯ããªãè€éãªæ©èœã§ã ã ç¹ã«
mousemove
ã
scroll
ãªã©ã®ã€ãã³ãå
ã§é »ç¹ã«å®è¡ãããšãUIã®å¿çæ§ãäœäžããå¯èœæ§ããããŸãã
jQueryãªããžã§ã¯ãã®ãã£ãã·ã³ã°ãä¿é²ããå€ãã®èšäºã«ãããããããéçºè
ã¯åŒãç¶ã
$
ãåã蟌ã¿ãŸãã ããã¯ãã©ã€ãã©ãªã®æ§æããã®ã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ãä¿é²ããããã§ãã
ãã®é¢æ°ã®å¥ã®åé¡ã¯ã2ã€ã®
å®å
šã«ç°ãªãã¿ã¹ã¯ãæ
åœããããšã§ãã 人ã
ã¯ãã§ã«ãã®æ§æã«æ
£ããŠããŸãããããã¯äžè¬çãªå Žåã®é¢æ°èšèšã®è¯ãç¿æ
£ã§ã¯ãããŸããã
$("a");
ããè¯ãdomã§ã¯ã$é¢æ°ã®è²¬ä»»ç¯å²ã¯ããã€ãã®æ¹æ³ã§ã«ããŒãããŠããŸã ïŒ
find[All]
and
DOM.create
ã
find[All]
ã¡ãœããã¯ãCSSã»ã¬ã¯ã¿ãŒã«ãã£ãŠèŠçŽ ãæ€çŽ¢ããããã«äœ¿çšãããŸãã
DOM.create
ã¯ãã¡ã¢ãªå
ã«æ°ããã¢ã€ãã ãäœæããŸãã é¢æ°åã¯ããããã®é¢æ°ã®æ©èœãæ確ã«ç€ºããŠããŸãã
è§æ¬åŒ§æŒç®åã®å€
ãã«é¢æ°ã®åŒã³åºããå€ããããšããåé¡ã®ãã1ã€ã®çç±ã¯ãè§æ¬åŒ§æŒç®åã§ãã æ°ããjQueryãªããžã§ã¯ããäœæããããšãé¢é£ãããã¹ãŠã®èŠçŽ ãæ°å€ããããã£ã«ä¿åãããŸãã ãã®ããããã£ã®å€ã«ã¯ãjQueryã©ãããŒã§ã¯ãªãã
ãã€ãã£ãèŠçŽ ã®ã€ã³ã¹ã¿ã³ã¹ãå«ãŸããŠããããšã«æ³šæããããšãéèŠã§ãã
var links = $("a"); links[0].on("click", function() { ... });
ãã®æ©èœã«ãããjQueryãŸãã¯å¥ã®ã©ã€ãã©ãªïŒã¢ã³ããŒã¹ã³ã¢ãªã©ïŒã®ãã¹ãŠã®é¢æ°ã¡ãœããã§ã¯ãçŸåšã®èŠçŽ ãå埩é¢æ°å
ã§
$()
ã©ããããå¿
èŠããããŸãã ãã®ãããéçºè
ã¯ãã©ã€ãã©ãªãDOMã®æäœã«äœ¿çšããããšããäºå®ã«ãããããããèªåãã©ã®ãªããžã§ã¯ãïŒãã€ãã£ããŸãã¯vraperïŒã§åäœããããåžžã«èŠããŠããå¿
èŠããããŸãã
ããè¯ãæ¹æ³ã§ã¯ãè§æ¬åŒ§æŒç®åã¯ã©ã€ãã©ãªãªããžã§ã¯ããè¿ãã®ã§
ããã€ãã£ãèŠçŽ ãå¿ããããšãã§ããŸã ã ãããã«ã¢ã¯ã»ã¹ããå¯äžã®åæ³çãªæ¹æ³ã¯ãç¹å¥ãª
legacy
ã¡ãœããã䜿çšããããšã§ãã
var foo = DOM.find("#foo"); foo.legacy(function(node) {
ããããå®éã«ã¯ãéåžžã«ãŸããªã±ãŒã¹ã§å¿
èŠã«ãªããŸããããšãã°ããã€ãã£ãé¢æ°ãŸãã¯å¥ã®DOMã©ã€ãã©ãªãšã®äºææ§ãå¿
èŠãªå Žåã§ãïŒäžèšã®äŸã®
Hammerãªã©ïŒã
falseãè¿ãåé¡
ç§ãæ¬åœã«é©ããããšã®1ã€ã¯ãã€ãã³ããªã¹ããŒã§
return false
ã
return false
ãšããå¥åŠãªåŠçã§ããã W3Cæšæºã«åŸã£ãŠ
ãã»ãšãã©ã®å Žå ããã®å€ã¯ããã©ã«ãã®åäœããªãŒããŒã©ã€ãããå¿
èŠããããŸãã jQueryã§ã¯ã
return false
ã€ãã³ãã®å§ä»»ãããã«
åæ¢ããŸã ïŒ
ããã«ã¯ããã€ãã®åé¡ããããŸãã
stopPropagation()
ãåç¬ã§åŒã³åºããšãäºææ§ã®åé¡ãçºçããå¯èœæ§ããããŸãã 圌ã¯ä»ã®ãªã¹ããŒããã®ãããªã€ãã³ãã®çºçã«é¢ããŠåœŒãã®ä»äºãããèœåãå£ããŸã- ã»ãšãã©ã®éçºè
ïŒçµéšè±å¯ãªéçºè
ã§ãïŒã¯ããã®åäœãæåŸ
ããŠããŸãã
jQueryã³ãã¥ããã£ãæšæºã«éåããããšã決ããçç±ã¯äžæã§ãã ãŸããbetter-domã¯ãã®ãšã©ãŒãç¹°ãè¿ããŸãããã€ãã³ããã³ãã©ãŒå
ã§
return false
ã
return false
ãšãäºæ³ã©ãã
preventDefault()
ã®ã¿ãåŒã³åºãããŸãã
findãšfindAll
ã¢ã€ãã ã®æ€çŽ¢ã¯ããã©ãŠã¶ã§
æãé«äŸ¡ãªæäœã®1ã€ã§ãã
querySelector
ãš
querySelectorAll
2ã€ã®ãã€ãã£ãé¢æ°ã䜿çšããŠå®è£
ã§ããŸãã 2ã€ã®éãã¯ãæåã®äžèŽåŸã«æåã®æ€çŽ¢ãåæ¢ããããšã§ãã
ãã®æ©èœã«ãããé©åãªå Žåã«å埩åæ°ã倧å¹
ã«åæžã§ããŸãã ç§ã®ãã¹ãã§ã¯
ãé床ã®åäžã¯æ倧20åã«ãªããŸãã ãŸããããã¥ã¡ã³ãããªãŒã®ãµã€ãºã«å¿ããŠã®ã£ãããå¢å ããããšãäºæ³ã§ããŸãã
jQueryã«ã¯ãäžè¬ã«
querySelectorAll
ã䜿çšãã
find
ã¡ãœããããã
find
ã çŸåšãŸã§ã
querySelector
ã䜿çšããŠæåã®é©åãªèŠçŽ ã®ã¿ãæ€çŽ¢ããã¡ãœããã¯ãããŸããã
better-domã«
find
ã
find
ãš
findAll
2ã€ã®ç°ãªãã¡ãœããããããŸãã äžèšã®
querySelector
-optimizationã䜿çšã§ããŸãã æœåšçãªå©çãè©äŸ¡ããããã«ãæåŸã®åçšãããžã§ã¯ãã®ãœãŒã¹ã³ãŒãã®ãšã³ããªæ°ã§éžæããŸããã
find
-11åã®ãã¡ã€ã«ã§103åã®äžèŽfindAll
-4ã€ã®ãã¡ã€ã«ã§14ã®findAll
確ãã«ã
find
ã¡ãœããã®æ¹ãã¯ããã«äººæ°ããããŸãã ããã¯ãã»ãšãã©ã®å Žå
querySelector
-optimizationã
querySelector
ããšãæå³ããŸãããããã£ãŠãã¯ã©ã€ã¢ã³ãã§ã®ã³ãŒãã®ããã©ãŒãã³ã¹ãç®ã«èŠãã圢ã§åäžãããããšãã§ããŸãã
ãããã«
ã©ã€ãæ¡åŒµæ©èœã䜿çšããéçºã«ãããããã³ããšã³ãã§ã®äœæ¥ãæ¬åœã«æ¥œã«ãªããŸãã UIãå€ãã®å°ããªããŒãã«åå²ãããšãããç¬ç«ããïŒ=ä¿¡é Œã§ããïŒãœãªã¥ãŒã·ã§ã³ãäœæããã®ã«åœ¹ç«ã¡ãŸãã ããããäžèšãããããããã«ãbetter-domã¯åœŒãã ãã®ãã®ã§ã¯ãããŸããïŒãã ããããã¯æ¬æ¥ã®äž»ãªç®æšã§ãããïŒã
éçºäžã«ãç§ã¯1ã€ã®éèŠãªããšã«æ°ä»ããŸãããçŸåšã®æšæºãå®å
šã«æºããããŠããªãå ŽåããŸãã¯æ¹åæ¹æ³ã«ã€ããŠã¢ã€ãã¢ãããå Žåã¯
ãããããå®è£
ããæ©èœããããšã蚌æããŠãã ãã ã ãããŠãããã¯ãšãŠã楜ããã§ãïŒ
better-domã©ã€ãã©ãªã«é¢ãã詳现æ
å ±ã¯
ãåžžã«
GitHubã«ãããŸã ã