Olá pessoal!
Estou tentando associar uma mudança do ícone do botão que exibe/esconde o ranking à condição de visibilidade do ranking. A ideia seria no momento em que o placar está visível o ícone ser uma seta para cima (expand_less) e no momento em que o ranking não está visível ser uma seta para baixo (expand_more).
Esse é meu html referente ao botão:
<button id="botao-placar"class="btn-floating btn-large waves-effect waves-light blue botao-reiniciar">
<i class="material-icons icone-placar"></i>
</button>
Porém, se eu utilizo a função de slideToggle, da seguinte forma:
$("#botao-placar").click(exibePlacar);
var iconePlacar = $(".icone-placar");
var placar = $(".placar");
function exibePlacar(){
placar.stop().slideToggle(600);
if (placar.is(':visible')){
iconePlacar.text("expand_less");
}
else{
iconePlacar.text("expand_more");
}
}
O efeito não ocorre. Ele entra apenas em um dos ifs e fica lá repetidamente, independente da condição do ranking (ao analisar o código no console ele mostra alteração entre display:none e display:block, porém ao debugar ficar só no display:block).
Porém, da seguinte forma a troca do ícone funciona:
function exibePlacar(){
if (placar.css("display") == "none"){
placar.css("display", "block" );
}
else {
placar.css("display", "none");
}
if (placar.is(':visible')){
iconePlacar.text("expand_less");
}
else{
iconePlacar.text("expand_more");
}
}
Alguém consegue me dar uma luz sobre o por que não funcionar com .slideToggle?