JQUERY
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?
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?
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);
$([Ô]#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);
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.
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
<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
Legal, bem explicado.
No caso de um arquivo js externo, to fazendo mais ou menos assim pra aplicar um efeito:
Sendo btnCad um server control, setado como Static, por vezes nao funfa...
Um FieldSet aceita jQuery diretamente?
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?
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);
});
}
<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);
});
}
Verdade, menos passÃvel à erros, creio.
Boa dica.
Boa dica.
Tópico encerrado , respostas não são mais permitidas