Mostrando postagens com marcador jQuey. Mostrar todas as postagens
Mostrando postagens com marcador jQuey. Mostrar todas as postagens

segunda-feira, 29 de março de 2010

jQuery - Boas práticas com FreeMarker/Velocity

Primeiramente é bom estar escrevendo novamente hehehe. Faz tempo que queria postar algo mas sempre (por algum inconveniente ou destino) ficava sem tempo. Bom vamos lá ...
Antes de tudo tu já deves ou pelo menos tem uma noção de para que utilizamos ferramentas como Freemarker ou mesmo o Velocity? Não?? ... Eu gosto de falar deles com geradores de código HTML em tempo de execução, isto é, essas ferramentas me possibilitam criar componentes em código HTML a partir de um modelo pré-definido. Conseguiu entender agora? Se a reposta ainda é não fique tranquilo, isso é mais fácil do que parece.
Bom, nada melhor do que um exemplo não é? Então supondo que o modelo gere um código HTML onde eu tenho um Label (contendo a tescrição do item) e um Input (que receberá valores passados pelo usuário), algo mais ou menos assim:

O código Java por sua vez irá passar alguns váriáveis para o modelo. Neste exmplo vou usar o Velocity, segue:

VelocityContext context = new VelocityContext();
context.put("id", "my_velocity_id"); //id padrão
context.put("isEditable", true); //se o Input pode ser editado

context.put("text", "Descrição do Item"); //adicionado a Label
context.put("value", "Valor do Item"); //adicionado ao Input

StringWriter w = new StringWriter();
Velocity.mergeTemplate("myTemplate.vm", "UTF-8", context, w);

E por sua vez temos o código do arquivo myTemplate.vm:
<center>
     <div style="border:1px solid black; padding: 2px 2px 2px 2px">
        <label id="${id}_label_">${text}</label> <input id="${id}_input_" value="${value}" />
     </div>
</center>

Espero que você que estava meio em dúvida se tinha entendido ou não tenha compreendido como isso funciona. Senão não adianta continuar hahaha ... brincadeira.
Exemplinho até agora foi bonito mas não falamos nada de jQuery, bom se você prestou atenção viu que meu código Java está passando um parâmetro que não está sendo utilizado no Velocity. Consegue descobrir? ... hehehe ... se olhar bem verá que tem o parâmtro isEditable não é usado de modo algum no myTemplate.vm. Mas então para que serve? Bom se você lembra o assunto do tópico verá que queremos usar jQuery no nosso Velocity, para isso vamos usar o parâmetro isEditable para gerar um código JavaScript e modificar o nosso Input, tudo isso usando uma linha do jQuery :D ... segue o novo myTemplate.vm:
<center>
     <div style="border:1px solid black; padding: 2px 2px 2px 2px">
        <label id="${id}_label_">${text}</label> <input id="${id}_input_" value="${value}" />
     </div>
</center>
## Se isEditable for false
#if (!${isEditable})
  <script type="text/javascript">
     ## modo normal de utilizar no Velocity -- funciona!
     $("#"+"${id}_input_").attr("readonly","readonly");
  </script>
#end

Repare que em vez de eu usar o seletor do jQuery como uma só string acabei separando em duas: "#" e "${id}_input_". Isso porque se o # ficar ao lado do $ a API não irá gerar corretamente a tag, causando um transtorno e que sem dúvida o fará perder muito tempo.
Note que # e $ são palavras a ferramenta também utiliza internamente. Por isso alguns sites aconselham que em vez de usar: $(seletor), utilizar a forma extença jQuery(seletor).


quarta-feira, 24 de fevereiro de 2010

jQuery - Usando Seletores

Primeiramente você deve se perguntar é qual a vantagem em usar os seletores do jQuery? Alguns vão lhe responder que são mais rápidos, mas na verdade depende do seletor que você usar e também em qual browser está executando a aplicação.

Uma boa leitura para essas dúvidas sobre a performance pode ser vista em: 101 on jQuery Selector Performa. Nela o autor testa os usos de seletores usando id, class e tags-name. Mas pelo que entendi dos resultados ele testou esse seletores com uma versão mais antiga do jQuery. Pelo que se nota nas ultimas atualizações os seletores estão cada vez mais rápidos, como vemos no comparativos das versões 1.3.2, 1.4.1 e 1.4.2:




Mas continuando, a baixo segue a lista de seletores que podemos utilizar:

SeletorExemploDescrição

*$(’*');Este seletor retorna todos os elementos do DOM.
#id$(’#id’);Este seletor retorna todos os elementos que contenham o mesmo do ID passado.
.class$(’.class’)Este seletor retorna todos os elementos que possuam o class name passado.
element$(’element’)Este seletor retorna todos os elementos do mesmo tipo de acordo com o tag name. Ex de tag name: table, ul, li, a etc.
a, b, c. … n$(’th, td, .class, #id’)Este método pode ser usado para selecionar multiplos elementos.
parent child$(’li a’)Seleciona todos os "a" elementos que estão contidos no elemento "li".
a > b$(’table > tr’);Irá selecionar todos "tr" elementos que são filhos de "table".
a + b$(’li + a’);Seleciona todos os "a" elementos que estão imediatamente após os elementos "li".
a ~ b$(’p ~ ul’);Seleciona todos os elementos "ul" que vierem depois de "p".
:first$(’ul li:first’);Retorna o primeiro elemento.
:last$(’ul li:last’);Retorna o último elemento.
:not(a)$(’input:not(:checked)’);Retorna todos os "input" elementos que não estão "checked".
:has(a)$(’div:has(p)’);Retorna todos os "div" elementos que contenham "p".
:odd$(’ul li:odd’);Retorna todos os elementos impares da lista.
:even$(’ul li:even’);Retorna todos os elementos pares da lista.
:eq(n)$(’ul li:eq(n)’);Retorna o "n" elemento.
:gt(n)$(’ul li:gt(n)’);Retorna todos os elementos que estão após "n".
:lt(n)$(’ul li:lt(n)’);Retorna todos os elementos que estão antes de "n"
:header$(’:header’);Retorna todos elementos que são titulos. Ex; h1, h2, etc.
:animated$(’ul:animated’);Retorna todos os "ul" elementos que são com uma animação em processo.
:contains(text)$(’:contains(hello)’);Retorna todos os elementos que contenham o texto "hello".
:empty$(’:empty’);Retorna todos os elementos que não contenham filhos.
:parent$(’li:parent’);Retorna o elemento pai do elemento "li".
:hidden$(’ul:hidden’);Retorna todos os "ul" que estão escondidos (hidden)>
:visible$(’ul:visible’);Retorna todos os "ul" que são visíveis
[attribute]$(’[href]‘);Retorna todos os elementos que contenham o atributo "href".
[attribute=value]$(’[rel=external]‘);Retorna todos os elementos que contenham o atributo "ret" com o valor "external".
['attribute!=value']$(’[rel!=external]‘);Retorna todos os elementos que contenham o atributo "ret" sendo que o valor não pode ser "external".
[attribute^=value]$(’[class^=open]‘);Retorna todos os elementos que contenham o atributo "class" e que valor desse inicie com "open".
[attribute$=value]$(’[id$=-wrapper]‘);Retorna todos os elementos que contenham o atributo "id" e que valor desse termine com "-wrapper".
[attribute*=value]$(’[class*=offer]‘);Retorna todos os elementos que contenham o atributo "class" e que valor desse possua a string "offer".
:input$(’:input’);Retorna somentos os elementos de input, isto é: input, select, textarea e button
:text$(’:text’);Retorna somente os elementos de tipo "text".
:password$(’:password’);Retorna somente os elementos de tipo "password".
:radio$(’:radio’);Retorna somente os elementos de tipo "radio".
:checkbox$(’:checkbox’);Retorna somente os elementos de tipo "checkbox".
:submit$(’:submit’);Retorna somente os elementos de tipo "submit"
:image$(’:image’);Retorna somente os elementos de tipo "image"
:reset$(’:reset’);Retorna somente os elementos de tipo "rest".
:file$(’:file’);Retorna somente os elementos de tipo "file".
:button$(’:button’);Retorna somente os elementos do tipo "button".
:enabled$(’:enabled’);Retorna todos os elementos que estão "enabled".
:selected$(’:selected’);Retorna os elementos que está selected da lista de select.
:disabled$(’:disabled’);Retorna todos os elementos que estão "disabled".
:checked$(’:checked’);Retorna os elementos que estão "checked" (radio ou checkbox).



quarta-feira, 17 de fevereiro de 2010

jQuery - Introdução

Como muito de vocês seguidamente tem que mexer em códigos javascript e talvez já devam ter se deparado com um $(document) e se perguntou que que é isso? Bom pode ser uma referência a document usando jQuery.

Se alguém já procurou sobre jQuery no Google já deve ter lido que "jQuery é um framework para ajudar os desenvolvedores a se concentrarem na lógica dos sistemas da web e não nos problemas de incompatibilidade dos navegadores atuais."

Tá mas o que da de fazer com isso? Bom o exemplo mais simples é o de selecionar um determinado elemento da página. O que antes era necessário utilizar "document.getElementById('myid')", com o jQuery basta usar o "$('#myid')" e funciona da mesma maneira. No javascript não existe um "document.getElementByClass", o que seria de enorme utilidade para qualquer desenvolvedor, mas no jQuery há. E de maneira muito simples, "$('.myclass')", com isso você consegue selecionar todos elementos que tenham a classe ".myclass" e à partir disso, fazer o que for necessário.

Ou exemplo é que com o jquery é muito mais fácil trabalhar com eventos como o "click" a simples implementação da função ".click" no seu código carregado junto com a página é o suficiente, exemplo:
   $('img').click( function () {
      alert('cliquei na imagem');
   });

Quem se interessou pode dar uma olhada nos exemplos no site do jQuery: http://docs.jquery.com/Main_PageTechnorati