Este artigo foi traduzido por máquina.

Cutting Edge

Explorar jQuery rich Client script com, parte 1

Dino Esposito

Conteúdo

O objeto jQuery
Seletores
Filtros
Filtros de formulário
Operações em conjuntos de quebra automática
jQuery Chainability
Saber O HTML

Você sabe como é.Mais funcionalidade que você deseja inclusão fora do navegador da Web, quanto mais você precisa escrever em JavaScript.Introduzido em torno de 1995 para adicionar a ação mais à páginas HTML, a linguagem JavaScript não foi expressamente projetada para desenvolvedores.Na verdade, ele foi projetado para manipular elementos HTML, definir estilos e reagir a entrada do usuário.Ele foi também amplamente usado para validação de entrada do lado do cliente e outras operações simples.

Ver o usa um pouco trivial que JavaScript foi aplicada ao pode levá-lo a acreditar que ele é simples gravar.Mas como Ray Djajadinata apontado check-out em"Criar aplicativos da Web avançados com técnicas orientada A objetos"em maio de 2007 emitir deMSDN Magazine, gravação do JavaScript bom código não é trivial, mas se você entende-bem, você pode realmente comprima alguma funcionalidade avançada em vez dele.

Uma das desvantagens do JavaScript, contudo, é que ele é uma linguagem interpretada (não compilada) e portanto é assunto para do navegador, bem, interpretação.Nem todos os navegadores processar o mesmo código de JavaScript da mesma maneira.Mas bibliotecas como jQuery podem fazer o código JavaScript mais previsível entre navegadores.

A Microsoft agora totalmente suporta jQuery e distribui-lo com a estrutura ASP.NET Model-View Controller (MVC).Além disso, as extensões têm sido desenvolvidas para integrar totalmente jQuery IntelliSense in Visual Studio 2008 SP1.

Na edição deste mês, vai Aborde as características principais da biblioteca de jQuery e foco em particular em seletores CSS, o encadeamento de função e conjuntos de quebra automática.Uma edição futura, verá tópicos mais específicos, como uso jQuery para manipular eventos e efeitos, armazenar em cache do navegador e solicitações de AJAX.

jQuery Visão geral

jQuery torna JavaScript código mais fácil e rápido gravar.A biblioteca Fornece funções auxiliares que significativamente aumentar sua produtividade ao diminuir sua frustração.O código resultante é mais fácil de ler e mais robusto porque o nível mais alto de abstração oculta um número de verificações e procedimentos de manipulação de erros.

A biblioteca, escrita por John Resig, consiste em um arquivo .js único que você pode baixar do docs.jquery.com/Downloading_jQuery.A versão mais recente é 1.2.6 que foi lançado na mola de 2008.O download site oferece três versões da biblioteca: descompactado, compactados e minimizado.

A versão descompactada é quase 100KB e é totalmente humana legíveis e comentado.Esta versão é definitivamente a para pegar para perusal e depuração.

A versão minimizada é sobre 50KB.Todos os caracteres extras que não são estritamente necessários para implementar a funcionalidade foram removidos do código fonte.O código é impraticável se não impossível ler para pessoas, mas ele funciona bem para computadores.

Finalmente, a versão compactada é quase não 30KB no tamanho, mas requer mais tempo de inicialização no cliente.O site oficial jQuery recomenda que você considerar obter a versão minimizada em vez da versão compactada para ambientes de produção.Além disso, você deve considerar que a compactação GZip durante a transmissão é prática padrão e é tratada por todos os servidores Web e navegadores modernos.Compactação GZip exibe o tamanho para baixo para cerca de 20 KB.Se você usar GZip, a versão compactada é praticamente inútil.

Em um projeto do ASP.NET, você também precisa um jquery-1.2.6-vsdoc.js em para ativar o IntelliSense e um patch do Visual Studio 2008 (consulte"Suporte de Editor KB958502-JScript para '-arquivos de documentação dos vsdoc.js IntelliSense") para oferecer suporte total a jQuery IntelliSense.

No ASP.NET, você pode usar um simples <script> marca para vincular a biblioteca ou você pode listá-lo na seção scripts do controle ScriptManager, assim:

<asp:ScriptManager id="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference path="Scripts/jquery-1.2.6.min.js" />
    </Scripts>
</asp:ScriptManager>

Observe que essa abordagem não é recomendada com a versão atual do ASP.NET, a menos que você também deseje a biblioteca Microsoft AJAX embutido na página.No ASP.NET 4.0, será possível desativar a inclusão dos arquivos de estrutura do cliente Microsoft AJAX, assim que essa abordagem uma boa.

O conjunto inteiro de jQuery funcionalidade pode ser dividido em quatro áreas principais: consulta de DOM e manipulação, efeitos e animação, AJAX e funções principais para trabalhar com matrizes, filtragem de dados e detecção de recursos do navegador.

O objeto jQuery

A palavra "consulta" no nome da biblioteca diz tudo.Ele se refere a execução de consultas sobre o DOM da página, que é onde jQuery obtém sua capacidade.

A biblioteca fornece uma interface poderosa para selecionar elementos DOM vai muito além da pesquisa simples de elementos que coincidam com uma determinada identificação.Por exemplo, você pode facilmente selecionar todos os elementos que compartilham uma determinada classe CSS, ter determinados atributos, aparecem em uma posição determinada da árvore ou tenham uma relação a outros elementos.Mais importante, você pode adicionar condições de filtro e você pode encadear esses recursos de consulta, bem como você pode consultar dados no SQL.

A raiz da biblioteca jQuery é a função jQuery, definida como segue:

var jQuery = window.jQuery = window.$ = function( selector, context ) 
{
   return new jQuery.fn.init( selector, context );
};

A função $ é um alias para a função jQuery. Quando você cria um objeto jQuery, você passa um seletor e um contexto. O seletor indica a expressão de consulta; o contexto indica a parte o DOM no qual executar a consulta. Se nenhum contexto for especificado, a função jQuery procura por elementos DOM dentro da página inteira DOM.

A função jQuery (, bem como seu alias $) executa algum trabalho nos argumentos fornecidos, executa a consulta e, em seguida, retorna um novo objeto de jQuery que contém os resultados. O objeto jQuery recém-criado pode, por sua vez, ser mais consultado ou filtrado, de um novo demonstrativo bem como em uma cadeia de instruções.

O objeto de jQuery raiz oferece suporte as seguintes assinaturas:

jQuery( expression, [context] )
jQuery( html, [ownerDocument] )
jQuery( elements )
jQuery( callback )

A primeira tem um seletor CSS e retorna uma matriz com quebra automática de elementos HTML, o conjunto de quebra automática de chamada. O segundo aceita uma seqüência de caracteres HTML, cria a subárvore relacionada e acrescenta à documentos proprietário especificado, se houver. A sobrecarga de terceira pega o elemento DOM especificado ou elementos. Finalmente, a quarta apenas usa uma função de retorno de chamada e executa no documento inteiro, assim documento da página for totalmente carregado.

Além disso, o objeto de jQuery raiz também apresenta alguns métodos auxiliares, conforme listado na Figura 1 . De particular interesse dos desenvolvedores é o cada método, que você pode usar como uma abreviada para uma iteração manual sobre o conteúdo de um objeto jQuery — geralmente os elementos DOM selecionados por meio de um seletor CSS. Aqui está um trecho de código que mostra cada método em ação. O loop processa todas as marcas <input> em um formulário:

$("form input").each(
    function(i) {
            this.title = "Input #" + i;    
}
);
Figura 1 funções de servidor de borda e proxy reverso para o 2007 OCS
Métodos Descrição
cada (retorno) Circula o conteúdo do conjunto de quebra automática e executa a função de retorno de chamada especificado.
comprimento Propriedade que retorna o número de elementos no conjunto de quebra automática.
eq (posição) Reduz o conjunto de quebra automática para o elemento único na posição especificada.
Get() Retorna o conteúdo do conjunto de quebra automática como uma matriz de elementos DOM.
Get (index) Retorna os elementos DOM na posição especificada no conjunto de quebra automática.
índice (elemento) Retorne o índice base 0 no conjunto de quebra automática do elemento DOM especificado, se houver.

A diferença entre (each) e um loop de JavaScript manual é que each() mapeia automaticamente o objeto "this" para o elemento na coleção processada.A função de retorno de chamada, no entanto, recebe um parâmetro opcional inteiro que é o índice (0-com base) da iteração.Vamos saber mais sobre jQuery seletores e sua sintaxe com base em CSS.

Aqui está o uso mais simples da função $:

var elem = $("#grid");

A função $ no trecho de código recupera o elemento (s todos os DOM) cuja propriedade ID corresponde à expressão especificada. O # symbol não pertence à seqüência de identificação, mas é apenas um prefixo para a função $ disambiguate seqüências de caracteres de identificação, classes CSS e nomes de marcas HTML. (O # symbol é parte da sintaxe CSS padrão para seleção de identificação.) Trecho de código anterior é funcionalmente equivalente para a seguinte instrução de DOM:

var elem = document.getElementById("grid");

Vale a pena observar que no DOM HTML, ao contrário no ASP.NET, vários elementos podem compartilhar a mesma identificação.Se uma matriz de elementos corresponde à identificação de, em seguida, método getElementById apenas retornará o primeiro elemento correspondente; getElementsByName, por outro lado, deve retornar a coleção inteira.

A semelhança entre métodos DOM clássicos e a função $ termina existe; a capacidade do $ vai muito além.Por meio de $, você selecionar elementos DOM e, em seguida, aplicar uma função para cada um.

A expressão de seletor é orientada pela sintaxe CSS 3.0 e pode alcançar um nível não trivial de complexidade.a Figura 2 mostra os seletores com suporte.A lista não inclui filtros, falarei sobre em alguns instantes.Ele é chave observar que em uma hierarquia de seletores o predecessor, o pai, ou o elemento anterior pode ser qualquer seletor válido, não apenas um elemento HTML.a Figura 3 mostra algumas consultas de exemplo.

A Figura 2 com suporte jQuery seletores
Seletor Descrição
#ID Retorna o primeiro elemento, se houver, no DOM com um atributo de ID correspondente.
elemento Retorna todos os elementos com um nome de marca correspondente.
.class Retorna todos os elementos com uma classe CSS correspondente.
* Retorna todos os elementos na página.
selector1,..., selectorN Aplica todos os seletores básicos determinados e retorna os resultados combinados.
descendente do ancestral Dado um ancestral seletor, retorna a coleção de todos os elementos descendentes que coincidir com o seletor de descendente.Por exemplo, "DIV p" retorna todos os elementos de <p> dentro de um <div>.
pai > filho Dado um seletor, retorna a coleção de todos os elementos filho que coincidir com o seletor de filho.
anterior + próximo Dado um seletor, retorna a coleção de todos os elementos irmãos que coincidir com o seguinte seletor e estão localizadas ao lado para o seletor de anterior.
anterior ~ irmão Dado um seletor, retorna a coleção de todos os elementos irmãos que coincidir com o seletor de irmão e segue o seletor de anterior.
Figura 3 exemplo jQuery seletores em ação
Seletor de exemplo Efeito
a entrada de formulário Retorna todos os campos de entrada em qualquer marca <form> na página.
Entrada de #Form1 Retorna a entrada todos os campos dentro do formulário rotulado Form1.
H2 + p Retorna todas as marcas <p> que estejam próximas um <h2> ao filho do mesmo pai.
Input.textBox Retorna todas as marcas <input> cuja classe CSS é textBox.
span.myClass div Retorna todas as marcas <span> cuja classe CSS é "myClass" localizado em um <div>.

Seletores podem ser mais refinados, aplicando filtros em atributos, conteúdo, posição e visibilidade.a Figura 4 lista algumas dos filtros mais populares no jQuery.A referência completa é em docs.jquery.com/Selectors.

Filtra, como o primeiro e último localizar elementos DOM uma determinada posição na coleção retornada.Você também pode usar uma sintaxe de índice-com base para elementos de filtro usando o eq, gt e lt filtros.O filtro eq pega o elemento cujo índice coincide com o índice determinado, enquanto gt e lt pegar elementos maiores ou menor que um determinado índice.

Filtros de atributo são ferramentas poderosas que selecionar elementos HTML em que um determinado atributo é em um determinado relacionamento com um valor.Na Figura 4 , só listada os filtros de atributo mais comumente usadas.Outros filtros existem para selecionar elementos no qual um determinado atributo começa com, termina com ou contém um valor determinado.Aqui está a sintaxe necessária:

[attribute^=value]  // begins with value
[attribute$=value]  // ends with value
[attribute*=value]  // contains value
Figura 4 jQuery filtros
Filtros de posição Descrição
:First Retorna o primeiro elemento da coleção de elementos selecionado.
: última Retorna o último elemento da coleção de elementos selecionado.
: not(selector) Filtra todos os elementos correspondentes no seletor de especificado.
: mesmo Retorna todos os elementos mesmo na coleção selecionada.
: ímpar Retorna todos os elementos ímpares na coleção selecionada.
Filtros de filho Descrição
: nth-child(expr) Retorna todos os elementos filho de qualquer pai que corresponde à expressão fornecida.A expressão pode ser um índice ou uma seqüência de matemática (por exemplo, 3n + 1), incluindo padrão seqüências numéricas como ímpar e par.
: primeiro: filho Retorna todos os elementos que são o primeiro filho do seu pai.
: última-filho Retorna todos os elementos que são o último filho do seu pai.
: somente-filho Retorna todos os elementos que são o único filho de seu pai.
Filtros de conteúdo Descrição
: contains(text) Retorna todos os elementos que contêm o texto especificado.
: vazio Retorna todos os elementos com sem filhos.Texto é considerado um nó filho.
: has(selector) Retorna todos os elementos que contêm pelo menos um elemento que coincide com o seletor de determinado.
: pai Retorna todos os elementos que têm pelo menos um filho.Texto é considerado um nó filho.
Filtros de visibilidade Descrição
: ocultos Retorna todos os elementos que estão ocultas no momento do modo de exibição.Elementos INPUT do tipo "hidden" estiverem adicionados à lista.
: visível Retorna todos os elementos que estão visíveis no momento.
Filtros de atributo Descrição
[atributo] Retorna todos os elementos que têm o atributo especificado.
[atributo = valor] Retorna todos os elementos que possuem o atributo especificado definido ao valor especificado.
[atributo! = valor] Retorna todos os elementos cujo atributo especificado (se presente) tem um valor diferente do fornecido.

Filtros de atributo também podem ser encadeados, simplesmente colocando dois ou mais delas lado a lado, assim:

[align=right][valign=top]

Um filtro particularmente eficiente é ' enésimo ' filho.Ele oferece suporte um número de diferentes expressões de entrada, conforme mostrado aqui:

:nth-child(index)
:nth-child(even)
:nth-child(odd)
:nth-child(sequence) 

O primeiro formato seleciona o filho ' enésimo ' de elementos HTML no seletor de origem onde n refere-se para o índice fornecido. Todos os elementos colocados em qualquer posição ou ímpar (base 0) são retornados se você especificar o filtro ou ímpar. Finalmente, você pode passar enésimo filho como a expressão de raiz de uma seqüência matemática como 3n para indicar múltiplos de 3.

Como exemplo, o seguinte seletor pega todas as linhas uma tabela (denominada DataGrid1) que estão nas posições determinadas pela seqüência 3n + 1, (1, 4, 7 e assim por diante) se lembrar de que ele é um índice baseado em zero:

#DataGrid1 tr:nth-child(3n+1)

Próxima que é uma expressão complexa muito mais, e ele demonstra o poder incrível e a flexibilidade de jQuery seletores:

#DataGrid1 tr:nth-child(3n+1):has(td[align=right]) td:odd

Ele lê da seguinte maneira: das todas as linhas da tabela selecionadas na etapa anterior (posicionar 1, 4, 7 e assim por diante), agora você apenas tirar aqueles que têm uma célula (uma marca <td>) em que o atributo Alinhar igual o valor de direito. Além disso, as linhas restantes, você só levar as células em colunas com um índice ímpar. Vamos considerar uma tabela HTML na Figura 5 . Na Figura 6 , a célula com um plano de fundo amarelo é o resultado da consulta.

Figura 5 uma tabela HTML

<table id="DataGrid1" border="1">
    <tr>
       <td>Column1</td>
       <td>Column2</td></tr>
    <tr>
       <td>Val1</td>
       <td align="right">Num1</td></tr>
    <tr>
       <td>Val2</td>
       <td align="right">Num2</td></tr>
    <tr>
       <td>Val3</td>
       <td align="right">Num3</td></tr>
    <tr>
       <td>Val4</td>
       <td>Num4</td></tr>
    <tr>
       <td>Val5</td>
       <td>Num5</td></tr>
    <tr>
       <td>Val6</td>
       <td>Num6</td></tr>
    <tr>
       <td>Val7</td>
       <td>Num7</td></tr>
</table>

fig06.gif

A Figura 6 selecionar determinadas células em uma tabela

Filtros de formulário

Como mencionado, a sintaxe geral do jQuery seletores está próximo à sintaxe de seletores CSS 3.0, apenas estendido com alguns elementos de pseudo extra como os listados em A Figura 7 .

A: filtro de entrada, em particular, se refere a todos os elementos de entrada lógicos você pode localizar uma página e não está limitado às marcas <input>. Na verdade, ele inclui elementos <textarea> e elementos <select> usados para exibir listas listboxes e lista suspensa. Seletores na Figura 7 não coincidem seletores CSS, mas fornecem atalhos úteis para pegar homogêneos elementos, como todas as marcas de entrada de um determinado tipo. Como exemplo, o seletor: texto equivale funcionalmente à seguinte:

form input[type=text]
Figura 7 filtros de formulário
Seletor Descrição
: entrada Retorna todos os elementos que têm uma função na coleta de dados de entrada, incluindo textarea e listas suspensas.
: texto Retorna entrados todos os elementos cujo atributo de tipo é texto.
: senha Retorna entrados todos os elementos cujo atributo de tipo é a senha.
: caixa de seleção Retorna entrados todos os elementos cujo atributo de tipo é caixa de seleção.
: rádio Retorna entrados todos os elementos cujo atributo de tipo é rádio.
: enviar Retorna todos os elementos input cujo atributo de tipo é enviar.
: Redefinir Retorna a entrada todos os elementos cujo atributo de tipo é redefinido.
: imagem Retorna entrados todos os elementos cujo atributo de tipo é a imagem.
: botão Retorna entrados todos os elementos cujo atributo de tipo é o botão.
: arquivo Retorna entrados todos os elementos cujo atributo de tipo é o arquivo.
: ocultos Retorna a entrada todos os elementos cujo atributo de tipo está oculto.
: habilitado Retorna a entrada todos os elementos que no momento estão habilitados.
: desabilitada Retorna a entrada todos os elementos que estão desabilitados.
: marcada Retorna todos os elementos de caixa de seleção ou de rádio que são verificados no momento.
: selecionada Retorna todos os elementos de lista que estão selecionados.

Outros auxiliares de boa estão disponíveis para capturar a entrada todos os elementos em uma página que estão ativados ou desativados e todas as caixas de seleção e botões de opção marcada bem como listam itens selecionados.

Operações em conjuntos de quebra automática

Elementos HTML que correspondam a um seletor são retornados embalada em uma nova instância do objeto jQuery.Este objeto incorpora uma matriz de JavaScript com todas as referências de DOM.Os resultados são chamados com freqüência como um conjunto de quebra automática.Um conjunto de quebra automática nunca é nulo, mesmo que nenhum elemento correspondente foi encontrado.Você verificar essa situação, observando a propriedade tamanho do objeto jQuery, conforme mostrado aqui:

// All TDs with a child IMG
var w_set = new jQuery("#DataGrid1 td:has(img))");
if (w_set.length == 0)
    alert("No match found.");
else
    alert(w_set.length)

O nível alto de flexibilidade mostrada por jQuery é um recurso excelente para que, mas, em seguida, depois de todos os elementos que estava procurando, você precisará processá-los. A abordagem mais simples possível envolve configurar um loop e executar uma função sobre cada item na coleção, como este:

var ws = $("#DataGrid1 tr:nth-child(3n+1)");
for(i = 0; i<ws.length; i++)
{
   processElement(ws[i]);
}
function processElement(elem)
{
   ...
}

Em tal uma iteração manual, você acessar elementos DOM diretamente, apenas como na programação clássica do JavaScript.

A biblioteca jQuery oferece duas rotas alternativas que são funcionalmente equivalentes para iteração manual. Bem, jQuery iterações resultam em código mais compacto e ainda mais legível. A primeira abordagem se baseia a cada função.

Como mencionado, em jQuery a cada função executa um retorno de chamada definido pelo usuário em qualquer elemento associado ao conjunto de quebra automática. Um número relativamente grande dos métodos operacionais, no entanto, existe para torná-lo ainda mais rápido e fácil para executar operações comuns no conjunto de quebra automática. Por exemplo, você pode usar a função de css para aplicar estilos CSS para o conjunto de quebra automática. A seguir é um exemplo que define o plano de fundo estilo de cor e a borda da entrada todos os elementos em um formulário:

$("form input").css(
   {'background-color' : 'yellow', 
    'border-style' : 'dashed'}
); 

Reconhecidamente, este exemplo curto é um pouco enganosa como ele pode sugerir que jQuery deve ser usado para coisas que CSS propriamente dito bem. A função de css é ótima quando ele trabalha nos estilos aplicados dinamicamente que dependem de interação do usuário ou alguma outra condição de tempo de execução.

Da mesma forma, você pode adicionar, remover e até mesmo ativar / desativar uma classe CSS nos elementos no conjunto de quebra automática. Você pode fazer isso por meio do addClass, removeClass e toggleClass funções. A função attr permite que você definir um ou vários atributos em todos os elementos. Por exemplo, eis como desabilitar a entrada todos os elementos:

$("form input").attr(
   {'disabled' : 'disabled'}
); 

A função de html define o conteúdo HTML de uma marca. Ele usa a propriedade de inner­HTML internamente. Para definir o texto interno de uma marca, em vez disso, você use a função de texto passando o texto para definir como o argumento. Isso é uma boa maneira de compreender os benefícios de uma biblioteca de vários navegadores como jQuery. A propriedade innerHTML pode ser considerada uma propriedade padrão de facto suportada todos os navegadores da mesma maneira.

O mesmo não podem ser considerado para a propriedade análoga que define apenas o texto. Esta propriedade é innerText no Internet Explorer e text­Element no Firefox. A função de texto jQuery oculta as diferenças e fornece a mesma funcionalidade em todos os navegadores.

jQuery Chainability

Um dos melhores recursos de jQuery é seu chainability, que é possível porque o próprio objeto jQuery, bem como a maioria das funções e filtros, retornar um objeto jQuery. O objeto retornado contém o conjunto original de quebra automática como modificadas pela função em si. Por exemplo, se você aplicar a função de css a um conjunto de quebra automática, o objeto de jQuery retornado contém o mesmo conjunto de elementos juntamente com um conjunto de modificação de estilos CSS. Se você aplicar um filtro, você obterá novamente um conjunto menor como filtrada pela função. Vale a pena observar que você também tem disponível um não função para excluir todos os elementos que coincidam com a consulta especificada.

Concatenação jQuery funções não poderia ser mais fácil. Tudo o que você precisa fazer é anexar uma nova chamada de função para o objeto jQuery retornado pela chamada anterior. Aqui está um exemplo:

$("form input")
.not("[type!=text]")
.css(
   {'background-color' : 'yellow', 
    'border-style' : 'dashed'})
.attr("value", "test"); 

Aqui a expressão de exemplo seleciona todos os campos de entrada em que o atributo type é igual ao texto e define alguns estilos CSS e o atributo de valor como valores fixos.(Observe que o exemplo, eu usado a não função apenas para adicionar um terceiro link para a cadeia.O resultado do não condição pode ser integrada a consulta de $ resultando em código ainda mais claro.)

Ele vai sem dizer que método de encadeamento produz mais compactar código; mas ele não necessariamente resulta em código mais rápido.O encadeamento é uma técnica que você, como um desenvolvedor, pode ou não pode se sentir confortável.Se você tiver problemas com um dessas expressões compactos, convém para dividi-la em partes para simplificar a depuração.

Finalmente, observe que nem todos os métodos jQuery retornam um objeto de jQuery modificado.Métodos como html ou texto, por exemplo, apenas retorno uma seqüência que respectivamente aponta para o conteúdo HTML ou texto do primeiro elemento da fonte de quebradas conjunto.Para a sintaxe exata de jQuery métodos consulte docs.jquery.com/Main_Page.

Saber O HTML

Quanto mais você explorar as intensidades de jQuery, quanto mais você entender a importância de saber em detalhes o HTML que você está trabalhando.Controles de servidor ASP.NET tendem a ocultar a estrutura do HTML que de saída.Por outro lado, os controles do servidor apenas foram introduzidos para permitir que os desenvolvedores focalizar atributos declarativos em vez de detalhes HTML.Anos de experiência comprovada que isso não foi sempre a abordagem certa.

Hoje, precisar manter seu HTML sob o controle total para acessibilidade, estilo e conformidade com XHTML.Por acaso, esse fato estabelece um vínculo sutil entre jQuery e a estrutura do ASP.NET MVC.E é não coincidence que a estrutura do ASP.NET MVC inclui a versão mais recente do jQuery no pacote.

Dito isso, também vale a pena observar que amarrando lógica para marcação usando jQuery seletores pode criar uma união indesejado entre a lógica e a forma do DOM, que pode resultar em aplicativos difíceis de manter.

Finalmente, se você está procurando mais idéias para usar o JavaScript em formas interessantes, confira a lista deArtigos de JavaScript no MSDN.

Envie suas dúvidas e comentários para Dino paracutting@microsoft.com.

Dino Esposito é um arquiteto na arquitetura na IDesign e o co-autor de Microsoft .NET: Architecting Applications for the Enterprise (Microsoft Press, 2008).Residente na Itália, Dino é palestrante assíduo em eventos do setor no mundo inteiro.Você pode ingressar em seu blog emweblogs.asp.NET/despos.