vanilla-lib

Vanilla JS library

当前为 2018-06-11 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/369430/604932/vanilla-lib.js

  1. /* vanilla-lib */
  2. var parent = elem => ( ! elem ? null : elem.parentNode ),
  3. isarr = expr => ( 'object' === typeof expr && Array === expr.constructor ),
  4. isfn = expr => ( 'function' === typeof expr ),
  5. test = ( expr,func,other ) => ( !! expr ? func(expr) : isfn(other) ? other(expr) : other ),
  6. log = console.debug,
  7. $$ = ( sel,elem ) => Array.slice((elem | document).querySelectorAll(sel)),
  8. $ = ( sel,elem ) => (elem | document).querySelector(sel);
  9.  
  10. function create( html, containerType ) {
  11. let container = null,
  12. result = null;
  13. containerType = containerType || 'div';
  14. create[ containerType ] =
  15. container = create[ containerType ] || document.createElement(containerType);
  16. container.innerHTML = html;
  17. result = Array.slice(container.childNodes)
  18. .map( elem => (elem.remove(), elem) );
  19. if ( 1 == result.length ) {
  20. result = result[ 0 ];
  21. }
  22. return result;
  23. }
  24.  
  25. function traverse( elem, up, sideways, elementsOnly, lastIfNull ) {
  26. let last = elem;
  27. while ( !! elem && up -- > 0 ) elem = (last = elem, parent(elem));
  28.  
  29. let prop = ( elementsOnly ? 'Element' : '' ) +'Sibling';
  30. if ( sideways < 0 ) {
  31. while ( !! elem && sideways ++ < 0 ) elem = (last = elem, elem[ 'previous'+ prop ]);
  32. } else if ( sideways > 0 ) {
  33. while ( !! elem && sideways -- > 0 ) elem = (last = elem, elem[ 'next'+ prop ]);
  34. }
  35.  
  36. return ( ! lastIfNull ? elem : elem || last );
  37. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址