Jump to content
marcelocardoso

click com slidetoggle e ANCORA no TOP do id

Recommended Posts

Fala galera...
Depois de tanto sofrer tentando e pesquisando na internet, não consegui resolver...
A nível de conhecimento, segue código para:::

1) Ao clicar, pegar o id do botão, em seguida abrir com slidetoggle e jogar no TOP tipo ancora.
2) ou seja, expandir a slidetoggle, mas POSICIONAR no id da DIV, SECTION ou etc...

CODE:
 

	$(function () {
		// $("#btn-maps").on("click", function () {
		// 	$('html, body').animate({
		// 		scrollTop: $("#maps").slideToggle('slow').offset().top - 135
		// 	}, 1200, 'linear');
		// });

		$("#btn-maps").click(
			function (event) {
				event.preventDefault();
				if ($("#maps").is(":visible")) {
					$("#maps").slideUp(600).offset().top;

				} else {
					$("#maps").slideDown(600).offset().bottom;
				}
			}
		);
	});

Este código, funciona perfeitamente, adaptado de vários códigos buscados na internet, porém, não consigo com nenhum dos dois, posicionar ao CLICK o SLIDETOGGLE ao expandir deixar examente no inicio do ID;

Dicas, Sugestões como fazer, realizar, agradeço.
Obrigado.

 

Share this post


Link to post
Share on other sites

Você diz um efeito tipo sanfona?

Você clica no item ele expande e e quando clica novamente ele oculta

Só que podemos ter diversos itens desses?

 

Tenho esse script pronto se for o caso.

Share this post


Link to post
Share on other sites

Olha so omar...., 

O code faz isso, so o problema quando expande, ele nao vai para o TOP do item da slidetoggle, queria que ele posicionasse a div expandida pela sua base no topo, tipo no inicio da div quando expandida, tentei com id, mas n consegui.... 

Share this post


Link to post
Share on other sites

Bem... Pelo que eu entendi você quer mover um elemento para outro local e isso é simples:

<div id="topo">Topo</div>
<hr />
<div>Esse é o meio</div>
<hr />
<div id="baixo">Elemento de baixo que vai para o topo</div>

<button onclick="mover();">Mover o de baixo para o topo</button>

<script>
    function mover() {
        var baixo = document.getElementById('baixo');
        document.getElementById('topo').appendChild(baixo);
    }
</script>

 

Sobre o efeito sanfona que acredito que seja o que realmente procura. veja esse script que desenvolvi faz algo similar ao seu objetivo, é bem simples de usar:

https://github.com/Spell-Master/sm-web/tree/master/scripts/Accordion

 

Com o arquivo CSS e JS incluso crie a seguinte situação

<div id="exemplo">
  <button class="acc-button">
    Primeiro
  </button>
  <div class="acc-container">
    Elemento interno do primeiro
  </div>
  <button class="acc-button">
    Segundo
  </button>
  <div class="acc-container">
    Elemento interno do segundo
  </div>
</div>

 

depois basta instanciar a classe:

Isso deve ficar abaixo dos elementos acima pode até ficar no final do "body"
<script>
  var objeto = new Accordion('exemplo');
</script>

Obs.: Não precisa usar jQuery

 

Share this post


Link to post
Share on other sites

a principio teu codigo faz o mesmo efeito accordion que o slideToggle do jquery faz, no que eu preciso, mas ainda peca, falha, no quesito alinhar pelo TOPO, vamos ver se consigo ser mais explicativo...


1) slidetoggle, é clicado, certo.
2) ele, automaticamente, é expandido, abre para baixo e expande o mesmo, com seu conteudo;
3) isso fica perfeito quando é feito com o position BOTTOM, normal dele, 
4) mas QUANDO é feito com o position para expandir para UP, ....
5) aí que está o problema, tentei com OFFSET, ao abrir para CIMA, independente do conteudo do slidetoggle ao ser aberto, deveria a barra de rolagem subir junto e pelo OFFSET, pegar o ID da DIV, e alinhar bem no inicio a div.

ELE EXPANDE CERTO,  mas tipo

Texto inicio
Texto meio
Texto fim

Ele não posiciona no texto início, fica sempre na metade, ou no texto fim, aí tu tens que subir a barra, para o texto início...
Entendeu agora...

Tentei de várias maneiras, pegar o OFFSET e jogar o ID, mas não consegui....
Fica a premissa...

Seu exemplo faz também, mas faz a mesma coisa que eu FIZ, tenho que alinhar no topo quando expande independente do tamanho da DIV pelo slidetoggle sendo aberta.

Se tiver cabeça para dar luz nisso, agradeço.
Obrigado.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Claudia França
      prezados como eu altero de loked para unloked do arro para não carregar o java e seguir com o procedimento. 
       
       
      ?Veja nesse link https://drive.google.com/drive/u/0/folders/1h0EbUoz3UOL8j9orWirUAPILt7cg7q-p 
      minhas imagens não estao subindindo aqui, não sei porque, acho que tenho limitação. 
       
       
    • By Claudia França
      prezados qdo removo o require colocado antes do doctype o botão desaparece como na imagem . Alguem pode me explicar porque??    dentro do setting tem apenas informações key do cliente e configurações da conta de email. 
       


    • By Pedro_silva
      Ola eu estou tendo um problema com esse problema do jquey e ate no momento não consegui corrigir 
       
      DataTables warning: Non-table node initialisation (A). For more information about this error
    • By Omar~
      Olá.... então digamos que eu tenha a seguinte situação:
      <div>Exemplo</div> <div style="position:relative"> <div style="position:absolute; height:500px; display:none">Caixa</div> </div> ----------------------------------------- Então temos uma caxa com 500 pixels de altura e não visível. Alí onde eu coloquei um monte de traço seria um hipótese que fosse o fim da tela ou fim da rolagem de tela atual.
      Então pelo javascript eu mudo o atributo display da caixa absoluta para "block", a caixa irá aparecer.
       
      Como eu detectaria que não há mais espaço abaixo para exibir-la, mudando seu bottom para top, para que quando não houvesse espaço a baixo para exibir ao invés de mostrar abaixo ela fosse mostrada acima?
       
      Motivo:
      Eu criei esse seguinte script
      https://github.com/Spell-Master/sm-web/tree/master/scripts/SelectOption
      Que por sua vez personaliza o combobox de um select.
       
       
      Mas me veio uma questão e se a pessoa quiser colocar o select logo no final do body? A lista personalizada será mostrada fora da tela.
      Lógico ele pode manipular o CSS para correção, mas seria mais interessante se o próprio script pudesse automatizar isso.
       
       
    • By Rafacharkman
      Olá, alguém saberia me dizer como eu posso fazer algo semelhante ao fopen() ou file() do PHP só que no JavaScript? o mais próximo que vi foi oque o AXIOS faz com JSON. Gostaria de saber se  dá para fazer algo do tipo diretamente pelo JavaScript.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.