Advertisement
giovani-rubim

JQyert Extension [module]

Nov 21st, 2019
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Módulo de funções auxiliares
  2.  
  3. // Cria um DOM element compatível com o selector
  4. // Exemplo de selector: input#id[name="nome"][type="button"].class1.class2
  5. const buildDOM = selector => {
  6.     const sep = '#[.';
  7.     const isSep = {};
  8.     sep.split('').forEach(chr => isSep[chr] = true);
  9.     let strIt = 0;
  10.     let first = 1;
  11.     let element;
  12.     let classes = '';
  13.     const addToken = token => {
  14.         if (first === 1) {
  15.             first = 0;
  16.             element = document.createElement(token);
  17.         } else if (token[0] === '#') {
  18.             element.setAttribute('id', token.substr(1));
  19.             return
  20.         } if (token[0] === '[') {
  21.             token = token.substr(1, token.length - 2);
  22.             const array = token.split('=');
  23.             const name = array[0];
  24.             let value = array[1];
  25.             value = value.substr(1, value.length - 2);
  26.             element.setAttribute(name, value);
  27.         } else if (token[0] === '.') {
  28.             classes += ' ' + token.substr(1);
  29.         }
  30.     };
  31.     const next = () => {
  32.         if (strIt >= selector.length) return false;
  33.         let token = selector[strIt], chr;
  34.         while (++strIt < selector.length && !isSep[chr = selector[strIt]]) {
  35.             token += chr;
  36.         }
  37.         addToken(token);
  38.         return true;
  39.     };
  40.     while (next());
  41.     if (classes) {
  42.         element.setAttribute('class', classes.trim());
  43.     }
  44.     return element;
  45. }
  46.  
  47. // Converte uma medida em pixels para number
  48. const parsePx = str => parseInt((str + '').replace('px', ''), 10);
  49.  
  50. jQuery.fn.sx = function() {
  51.     return parsePx(this.css('width'));
  52. };
  53. jQuery.fn.sy = function() {
  54.     return parsePx(this.css('height'));
  55. };
  56. jQuery.new = selector => $(buildDOM(selector));
  57. jQuery.txt = text => $(document.createTextNode(text));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement