Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Jquety - mudar classes de LI
19-12-2011, 11:53
Mensagem: #1
Jquety - mudar classes de LI
Boas

Estou a tentar mudar a class de uma LI quando carrego nela e simplesmente ja tentei algumas funções e nada, como por exemplo,

$(document).ready(function () {
$('li.li2').click(function () {

$('#link2').removeClass('sub').addClass('left');
ou
$('#link2').css('color, 'green');

});

});



Tentei estas basicas, pois nao tem nenhum filho e nenhum pai.

Podem me ajudar?

codigo da LI (é uma LI dentro doutra, como uma subLI):

<asp:Repeater ID="RepeaterSubMenu" runat="server" OnItemDataBound="RepeaterSubMenu_ItemDataBound">
<ItemTemplate>
<li class="li2"><a id="link2" runat="server" class="sub">
<asp:Literal ID="LiteralName" runat="server"></asp:Literal></a>
</ItemTemplate>
</asp:Repeater>

Css:

.sub:link{color: #514e4c;padding-left: 28px;padding-bottom: 5px;padding-top: 5px;float: left;}
.sub:visited{color: #514e4c;}
.sub:active{color: #514e4c;}
.sub:hover{color: #99CC00;margin-right: 0px;margin-left: 0px;}

.left:link{color: #99CC00;padding-left: 28px;padding-bottom: 5px;padding-top: 5px;float: left;}
.left:visited{color:#99CC00;}
.left:active{color: #99CC00;}
.left:hover{color: #99CC00;margin-right: 0px;margin-left: 0px;}


Como devem reparar, quero carregar no Link2 (respectivo ao LI2) e assim trocar de class.

Agradeço a quem me puderr ajudar

Cumprimentos,

Article0
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
19-12-2011, 12:02
Mensagem: #2
RE: Jquety - mudar classes de LI
A menos que estejas a dar referências (id's, classes ou objectos) erradas, deveria funcionar.

Já experimentaste fazer um debug para confirmar se está a ser executado o código quando clicas? (tip: console.log())

A única forma que vejo para isso não funcionar é se estiveres a adicionar esses elementos depois do DOM já estar carregado (por exemplo, por javascript/ajax). Nesse caso, terás de usar o live('click') em vez do click().

BrunoBernardino.com
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
19-12-2011, 12:11
Mensagem: #3
RE: Jquety - mudar classes de LI
Ja exprimentei fazer um debug e por o live('click') e tambem nada.

Se eu puser um alert(' ') o gajo ate me apresenta a caixa. A minha duvida é... Como as 3 Li vao mandar a uma pagina, será que faz a função quando carrego mas deixa de fazer efeito quando carrega a pagina onde a LI mandou? Pode ser isso.

Queria fazer algo como isto: http://www.java2s.com/Tutorial/JavaScrip...ssname.htm

Eu pensava que podia fazer desta maneira
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
19-12-2011, 12:30
Mensagem: #4
RE: Jquety - mudar classes de LI
Desculpa lá, mas tens aí incoerências no que dizes que me leva a acreditar que não estás a fazer bem o debug.

De qualquer das formas, se o link vai para outro lado, o teu problema é obviamente esse. Tens de fazer um return false no evento de click do anchor, ou pelo menos um event.preventDefault();

BrunoBernardino.com
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
19-12-2011, 12:32
Mensagem: #5
RE: Jquety - mudar classes de LI
Ja exprimentei fazer um debug e por o live('click') e tambem nada.

Se eu puser um alert(' ') o gajo ate me apresenta a caixa. A minha duvida é... Como as 3 Li vao mandar a uma pagina, será que faz a função quando carrego mas deixa de fazer efeito quando carrega a pagina onde a LI mandou? Pode ser isso.

Queria fazer algo como isto: http://www.java2s.com/Tutorial/JavaScrip...ssname.htm

Eu pensava que podia fazer desta maneira
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
19-12-2011, 12:54
Mensagem: #6
RE: Jquety - mudar classes de LI
Boas,

Não sei se foi erro de copy paste, mas vejo para já um problema no repeater, falta fechar o li. Outra coisa que não tenho a certeza, é que ao fazer o <a runat="server"> se o id do lado do cliente não é gerado no server side.

Tens o firebug instalado?
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
19-12-2011, 13:09
Mensagem: #7
RE: Jquety - mudar classes de LI
Sim tenho o firebug instalado.

O fecho da LI foi culpa do paste, pois aqui ta fechado. Acho que nesse caso do id gerado, nao a problema pois ele ja executou varias funções que fiz.

O problema é mesmo do codigo. Com o firebug, fui por o codigo na consola e nada.

Faltou me por uma coisa:

<ul class="dl3">
<asp:Repeater ID="RepeaterSubMenu" runat="server" OnItemDataBound="RepeaterSubMenu_ItemDataBound">
<ItemTemplate>
<li class="li2"><a id="link2" runat="server" class="sub">
<asp:Literal ID="LiteralName" runat="server"></asp:Literal></a></li>
</ItemTemplate>
</asp:Repeater>
</ul>


Esta é a estrutura do subLI.

tentei fazer isto:

$('#link2').removeClass('sub').addClass('left');

$('.dl3').removeClass('left');
$(this).parent().addClass('left');

$('#link2.dl3').removeClass('sub').addClass('left');


e nao da, ja testado no console do firebug. Ideias?
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
19-12-2011, 13:15
Mensagem: #8
RE: Jquety - mudar classes de LI
mas os identificadores estão correctos? Ou seja, a referência para $('#link2') existe mesmo? (o que te retorna na consola um $('#link2').length ?) Isto sem links é muito complicado...

BrunoBernardino.com
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
19-12-2011, 13:20
Mensagem: #9
RE: Jquety - mudar classes de LI
vou fazer o seguinte.

O site que estou a desenvovler é: http://wingerconsulting.spirituc.com/

O que estou a dizer é no menu do lado esquerdo onde nas actividades, soluções e produtos, quando carrego e vai para a pagina dele, o nome tem de ficar verde.

O resto ja tenho em cima
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
19-12-2011, 16:39
Mensagem: #10
RE: Jquety - mudar classes de LI
Deixa ver se percebo o que queres:

Quando carregas num link e vais para a página, queres que o menu fique selecionado, i.e. quando estou em "Produtos", este fique com o estilo de selecionado, correcto? Se é esta a intenção e os pedidos são em post-back, pq não fazes isto no servidor? Ou seja, quando estás a escrever o menu (repeater), escreves no li (acho que é no li) o estilo a indicar que estás nessa area? É que ao fazer o click, tas a fazer um post-back e perdes todas a referencias para tudo o que tinhas nessa página.

Percebi mal?
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 1 Visitante(s)