JQUERY

ONBASS 22/08/2012 09:42:31
#408319
Caros... bom dia,

Por quê em alguns exemplos vemos pessoas usando o [ô]#[ô] , já em outros casos usa-se [ô]<%x.ClientID%>[ô] ?
Em quais situações se emprega um ou outro?
KERPLUNK 22/08/2012 09:51:15
#408320
Resposta escolhida
Entenda que página web se divide em duas partes: O front-end e o codebehind. Quando fazemos:
$([Ô]#txtNome[Ô]).val();

Assim estamos usando o componente no cliente, sabendo que o componente vai ter sempre esse nome e não vai ser alterado pela renderização da página em componentes [Ô]Runat=server[Ô]

Agora, imagine uma textbox que roda no server(runat=server) que se chame [Ô]txtCliente[Ô]. Quando renderizado, esse controle vai mudar de nome devido ao modo como o ASP.NET trabalha. Então, para podermos acessar o id desse controle, usamos a propriedade SERVER ClientID. Quando colocamos <%= txtCliente.ClientID %>, o que está entre <% %>, será substituído pelo ID real do componente dando assim acesso ao mesmo. Pode-se até usar o JQuery:
var x = $([Ô]#<%=txtCliente.ClientID %>[Ô]).val();
alert(x);

ONBASS 22/08/2012 10:09:16
#408323
Citação:

Quando renderizado, esse controle vai mudar de nome devido ao modo como o ASP.NET trabalha.



KERP, embora seja possível usar Static no server, ainda assim é algo meio confuso pra mim que to começando em web, tipo quando se trata de efeitos e tal, onde não há obrigatoriamente um retorno, o mais indicado seria o [ô]#[ô] entao, apesar que tem horas que, nao sei porque pataquadas, o efeito nao funfa, mas estamos na tentativa...

grato amigao.
KERPLUNK 22/08/2012 10:34:54
#408325
Veja bem:
<asp:TextBox runat=[Ô]server[Ô] id=[Ô]txtCliente[Ô] />
<input type=[Ô]textbox[Ô] id=[Ô]txtCliente1[Ô] />
Quando renderizado, veja o código fonte da página e vai ter algo parecido com isso

<input type=[Ô]text[Ô] id=[Ô]ctl00_Conteudo_txtCliente[Ô] />
<input type=[Ô]text[Ô] id=[Ô]txtCliente1[Ô] />
Ou seja, o que era txtCliente, em um componente rodando no server, virou [Ô]ctl00_Conteudo_txtCliente[Ô], o que não estava no server ficou como estava.
Então, para acessar esses controles usando JQuery, você teria que fazer:
$([Ô]#ctl00_Conteudo_txtCliente[Ô]).val();
$([Ô]#txtCliente1[Ô]).val();

Dependendo da versão do framework, os nomes não são previsíveis, por isso, se usa o clientID no caso dos componentes em server:
$([Ô]#<%=txtCliente.ClientID%>[Ô]).val();
$([Ô]#txtCliente[Ô]).val();

Observe que o id do componente muda apenas no client, no server ele continua sendo [Ô]txtCliente[Ô], mas como o JQuery roda no no Client, você precisa de um jeito de pegar o id que ele foi transformado, para isso, você abre uma tag server que é o <%= %> e coloca ali o nome do componente no server e a propriedade ClientID, o server vai substituir isso pelo id que foi gerado no client
ONBASS 22/08/2012 10:55:00
#408327
Legal, bem explicado.
No caso de um arquivo js externo, to fazendo mais ou menos assim pra aplicar um efeito:

  

function efeitox()
{
$([Ô]#btnCad[Ô]).click(function()({
$([Ô]#divCad[Ô]).fadeIn(2000);
});
}

Sendo btnCad um server control, setado como Static, por vezes nao funfa...
Um FieldSet aceita jQuery diretamente?
KERPLUNK 22/08/2012 11:10:44
#408332
Bem, pelo que vi, você quer aplicar um efeito em controles ao serem clicados. Suponho que seja para todos os controles que tenham esse efeito, pertençam a mesma classe CSS:
<asp:TextBox runat=[Ô]server[Ô] id=[Ô]txtQualquerCoisa[Ô] CssClass=[Ô]meuControle[Ô] />
Nesse caso, ao invés de chamar por ID, use o Jquery para chamar por classe:
function efeitox()
{
$([Ô].meuControle[Ô]).click(function()({
$([Ô].meuControle[Ô]).fadeIn(2000);
});
}
ONBASS 22/08/2012 12:53:57
#408337
Verdade, menos passível à erros, creio.
Boa dica.
Tópico encerrado , respostas não são mais permitidas