mas o jQuery nao pode imitar o MooTools. Se voce quiser escrever classes, ou extender prototipos nativos, ou fazer alguma outra coisa que o MooTools consegue fazer, voce tera que fazer isso sozinho. Encadeamento como um Design patternVamos fazer outra dessa. Aqui um pouco de jQuery (do tutorial da jQuery): $(document).ready(function() { $('#faq').find('dd').hide().end().find('dt').click(function() { $(this).next().slideToggle(); });});Este e um exemplo de sintaxe que eu nao gosto. Olhando para o codigo acima, sou fortemente pressionado para ter certeza do que ele esta fazendo. Mais notavelmente, estou curioso sobre o que end faz e como find, que o segue, esta relacionado com o que end faz. Agora, olhando para a documentacao da jQuery, fica claro o que .end faz (ele reseta para o valor original do seletor, neste caso #faq). Mas isso me parece muito estranho. Quando trabalho com jQuery, geralmente me encontro incerto sobre o que um metodo ira me retornar. Claramente isso nao incomoda mais ninguem, pois o jQuery possui um monte de pessoas o utilizando felizes da vida, entao vou novamente assumir isto como uma preferencia pessoal.Vamos ver a logica acima com o MooTools: window.addEvent('domready', function() { var faq = $('faq'); faq.getElements('dd').hide(); faq.getElements('dt').addEvent('click', function() { this.getNext().slide('toggle'); });});Novamente, o codigo do MooTools e um pouco mais longo, mas e tambem mais explicito. Note tambem que o padrao de desenvolvimento aqui e guardar a referencia de #faq em uma variavel, onde jQuery usa seu metodo end para retorna-la. Vou mostrar que e possivel escrever codigos altamente encadeados em MooTools. Por exemplo: item.getElements('input[type=checkbox]').filter(function(box) { return box.checked != checked;}).set('checked', checked).getParent()[(checked) ? 'addClass' : 'removeClass']('checked').fireEvent((checked) ? 'check' : 'uncheck');Mas, realmente, escrever codigos como este em qualquer um dos frameworks, tenho que argumentar, e uma ma pratica. E muito melhor encapsular sua logica em trechos re-utilizaveis. Reutilizando codigo com a jQueryE muito tentador quando voce esta trabalhando em um projeto codificar desta maneira. Simplesmente adicione na pagina um pouco de logica que seleciona os elementos do DOM e "configura-os": sumindo com alguns, alterando outros, adicionando eventos onclick e onmouseover em outros. Desenvolver codigos dessa forma e muito eficiente, muito rapido. O problema de escrever toda sua logica na declaracao ondomready e que voce termina com um monte de codigo que faz a mesma coisa em lugares diferentes. Se olharmos o padrao FAQ acima, poderiamos facilmente aplicar a mesma logica em qualquer lugar de uma outra pagina com qualquer lista de termos e definicoes. Mas, afinal de contas, vamos repetir a mesma logica cada vez que precisarmos desse padrao?Uma forma simples de criar codigos reutilizaveis e agrupar a logica em uma funcao e passar os argumentos. Aqui esta como isso pode ser feito no jQuery: function faq(container, terms, definitions) { $(container).find(terms).hide().end().find(definitions).click(function() { $(this).next().slideToggle(); });};$(document).ready(function() { faq('#faq', 'dd', 'dt');});Esta e uma forma muito melhor por dois grandes e importantes motivos:Se amanha tivessemos que mudar como essas listas trabalham (talvez quisessemos adicionar uma logica de monitoramento de clicks para podermos medi-los nos nossos logs ou talvez quisessemos procurar as definicoes atraves de AJAX), nos poderiamos simplesmente mudar nosso metodo faq principal e todos os lugares em que o utilizamos sao automaticamente