Esse código é um estudo das funcionalidades básicas do jQuery. As funcionalidades foram selecionas a partir da documentação do AngularJs.
MinJq é uma função (como o jQuery) colocada no objeto "window", com os nomes "$" e "$$", caso já não estejam definidos por outra biblioteca.
Esse código adiciona e substitui funções nos protótipos de "Element" e "EventTarget" (ou "Node", no caso do IE), ampliando as funcionalidades dos nós do próprio DOM.
Também cria as funções "isArray" no protótipo de "Array", e "bind" no protótipo de "Function", caso não existam.
O protótipo de MinJq é adicionado a propriedade ".fn", como no jQuery, criando a possibilidade do mesmo sistema de plugins que existe com o jQuery.
| Função | Protótipo de "Element" | $ (MinJq) | Descrição |
|---|---|---|---|
| addClass | ✅ | ✅ | Adiciona uma classe ao elemento |
| after | ✅ | ✅ | Adiciona o elemento após o elemento de parâmetro |
| append | ✅ | ✅ | Adiciona o elemento de parâmetro após este elemento |
| attr | ✅ | ✅ | Configura ou busca o valor de um atributo |
| before | ✅ | ✅ | Adiciona o elemento antes do elemento de parâmetro |
| bind | ✅ | ✅ | O mesmo que ".on" |
| children | ❌ | ✅ | Retorna os filhos dos nós na seleção |
| clone | ✅ | ✅ | Cria um clone do nó selecionado (deep) |
| contents | ❌ | ✅ | Retorna o conteúdo do nó selecionado (sem texto) |
| css | ✅ | ✅ | Configura o atributo "style" dos nós selecionados |
| data | ✅ | ✅ | Configura ou retorna informações adicionais do nó selecionado |
| detach | ✅ | ✅ | Remove os nós do DOM |
| empty | ✅ | ✅ | Remove todos os elementos de dentro do nó |
| eq | ❌ | ✅ | Retorna o nó do índice informado (de dentro do obj/lista $) |
| find | ✅ | ✅ | Encontra os nós de acordo com a busca (.querySelectorAll) |
| hasClass | ✅ | ✅ | Verifica se o nó tem a classe informada |
| html | ✅ | ✅ | Retorna ou configura o conteúdo HTML do nó (.innerHTML) |
| is | ✅ | ✅ | Verifica se o nó esta de acordo com o critério informado (CSS ou nó) |
| is$ | ❌ | ✅ | Verifica se é o objeto MinJq ($ ou $$) |
| isArray | ❌ | ✅ | Verifica se é um vetor |
| isDate | ❌ | ✅ | Verifica se é um objeto de data |
| isDef | ❌ | ✅ | Verifica se é diferente do tipo indefinido ("undefined") |
| isFunc | ❌ | ✅ | Verifica se é uma função |
| isNumber | ❌ | ✅ | Verifica se pe um número |
| isString | ❌ | ✅ | Verifica se é uma String |
| isUndef | ❌ | ✅ | Verifica se é do tipo indefinido ("undefined") |
| next | ✅ | ✅ | |
| off | ✅ | ✅ | Remove um ouvinte de um evento (.removeEventListener) |
| offset | ✅ | ✅ | Retorna a posição do nó em relação a Tela do navegador |
| on | ✅ | ✅ | Adiciona um ouvinte para um evento (.addEventListener) |
| one | ✅ | ✅ | O mesmo que ".on", mas só executa o ouvinte uma certa quantidade de vezes |
| parent | ✅ | ✅ | Retorna o nó pai dos nós selecionados (1 nível) |
| parents | ✅ | ✅ | Retorna os nós pais dos nós selecionados (hierarquia toda) |
| position | ✅ | ✅ | Retorna a posição do nó em relação ao nó pai |
| prepend | ✅ | ✅ | |
| prop | ✅ | ✅ | Configura ou retorna o valor de uma propriedade lógica (checked...) |
| ready | ❌ | ✅ | Adiciona um ouvinte para ser executado assim que a página for carregada ("DOMContentLoaded") |
| remove | ✅ | ✅ | Remove o elemento do DOM |
| removeAttr | ✅ | ✅ | Remove um atributo do nó |
| removeClass | ✅ | ✅ | Remove uma classse do nó |
| removeData | ✅ | ✅ | Remove uma informação adicional do nó |
| replaceWith | ✅ | ✅ | Troca o nó atual pelo nó parâmetro |
| text | ✅ | ✅ | Configura ou retorna o texto do nó |
| toggleClass | ✅ | ✅ | Configura ou remove uma classe ao nó |
| triggerHandle | |||
| unbind | ✅ | ✅ | O mesmo que ".off" |
| val | ✅ | ✅ | Configura ou retorna o valor do nó |
| wrap | ✅ | ✅ | Envolve o nó atual em um nó informado como parâmetro |
- Implementação de ".triggerHandle".
- Documentação de como usar este código.
- Correção da impl. de ".is$", atualmente pode apresentar problema com "iframe"s.
- Documentação da substituição de ".addEventListener" e ".removeEventListener" em "EventTarget".
- Rever testes com Jasmine, nem todas as funcionalidades estão testadas até então.
- Criar exemplos onde este código é usado junto ao AngularJs.
- Criar exemplos de sites usando apenas este código (sem jQuery ou AngularJs).