Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

guilomaker

Abrir e Fechar DIV

Recommended Posts

Bom dia

 

tenho o seguinte código

<div class="produtos">

 <div class="produtos-box clean-fix">

  <img src="img/sj/caldeirao.jpg" width="186" height="186">

  <div class="detalhes-btn v-btn">
  <p>Informações</p>
  </div>

  <div class="produtos-box-info">
   <div class="titulo-produto">
    <div class="fechar"></div>
 </div>

 <div class="conteudo">
 <iframe class="iframe" src="infor/caldeirao.html"></iframe>
</div>

</div>
</div>
</div><!--produtos-->

eu clico na div produtos-box e exibo a div produto-box-info , que por padrão e hidden.

$(".produtos-box").click(function(){
     $(this).children(".produtos-box-info").show();
    });

e dentro da div produto-box-info eu tenho uma div .fechar a qual seria pra fechar a mesma div a qual ela pertence, no caso a .produto-box-info

 $(".fechar").click(function(){
      $(this).children(".produtos-box-info").hide();
    });

só que por questões de hierarquia a div .fechar não funciona, seu eu colocar a div .fechar como fora da div .produtos, ai ela funciona! então como faço pra que ela funciona estando onde ela está ? tenho que relacionar ela com as outras divs ? se sim como?

 

pra quem quiser ver funcionando : http://catalogo.reidoaluminio.com.br/ o primeiro produto da linha hotel.

 

aproveitando o tópico, usando este mesmo código, como faço pra quando a div .produto-box-info estiver ativa e se a pessoa abrir outra essa que estava aberta fecha?

 

pro que eu quero fazer eu tenho que usar .show e .hide , toggle não funciona pra mim, pois dentro dessa div de informação eu exibo um iframe que tem scroll, e usando toggle esse scroll aparece na primeira vez que abre, já na segunda o scroll some! Já com show/hide o scroll funciona direitinho.

Compartilhar este post


Link para o post
Compartilhar em outros sites
$(".fechar").click(function(){
      $(this).parents(".produtos").find(".produtos-box-info").hide();
    });

Vamos tentando até aparecer alguém que manje e responda! ou até nós msm resolver kkkk

Compartilhar este post


Link para o post
Compartilhar em outros sites
$(".fechar").click(function(){
      $(this).parents(".produtos").find(".produtos-box-info").hide();
    });

Vamos tentando até aparecer alguém que manje e responda! ou até nós msm resolver kkkk

 

 

hehe também não deu, to aqui quebrando cabeça, e aposto que e simples, faz muito tempo que to por fora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara tenho uma solução mas n sei se vai adotar! assim, n consegui usar bem as funções navegando no DOM mas consegui uma método que pode ser util. usando "toggle" assim cria a ilusão que clikando no x fecha mas clicando em qualquer lugar da div pai fecha!
segue:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
	$(".pai").click(function(){
		$(this).find(".filho").toggle();
		$(this).find(".neto").toggle();
	});
	$(".neto").click(function(){
		$(this).parentsUntil(".pai");
	});
}); 
</script>
<style type="text/css">
.filho {text-decoration: none; color:#000; display: none;}
.neto{text-decoration: none; color:#000; display: none;}
.pai{text-decoration: underline; color: #05f;}
</style>
</head>
<body>
<div>
	<div class="pai">clique aqui para ler:

        <div class="neto">1
        </div>    	
        
        <div class="filho">1
        </div>
    
    </div>
	<div class="pai">clique aqui para ler:
    	
        <div class="filho">2
        </div>
        
        <div class="neto">2
        </div>
    
    </div>
    <div class="pai">clique aqui para ler:
    	
        <div class="filho">3
        </div>
        
        <div class="neto">3
        </div>
    
    </div>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

igual eu falei no primeiro tópico

 

 

 

pro que eu quero fazer eu tenho que usar .show e .hide , toggle não funciona pra mim, pois dentro dessa div de informação eu exibo um iframe que tem scroll, e usando toggle esse scroll aparece na primeira vez que abre, já na segunda o scroll some! Já com show/hide o scroll funciona direitinho.

 

eu consigo fazer com o toggle, mais se eu usar ele o scroll da div informações não funciona normalmente. já com o show e hide funcionou da forma que eu preciso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara se você conseguir deixa um post aqui como foi! pq bixo! negócio complicado! kkkk

 

acho que você entendeu errado! eu falei que com o toggle não funciona da forma que eu preciso, eu preciso exibir a div ao clique do usuário e esconder a mesma ao clique do usuário em um lugar determinado.

 

ontem fiquei o dia todo buscando uma solução, ainda não sair do lugar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tinha dito que o problema da usar "toggle" era por causa do scroll que precisava aparecer e com toggle n aparecia você já tentou assim?

obs: abre em um navegador e olha funcionando e ver se é assim q você quer!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    var n = $(".filho").css("display");
    $(".pai").click(function(){
        if($(this).find(".filho").css("display") == n){
            $(this).find("p").text("fechar");
            $(this).find(".filho").css("display","block");
        }else{
            $(this).find(".filho").css("display","none");
            $(this).find("p").text("abrir");
        }
    })
    
});
</script>
<style type="text/css">
.filho {text-decoration: none; color:#000; display: none; width: 100px; height: 100px; overflow: scroll;}
.neto{text-decoration: none; color:#000;}
.pai{text-decoration: underline; color: #05f; display: block;}
</style>
</head>
<body>
	<div class="pai"><p>clique aqui para ler:</p>
    
        <div class="filho">
        	<p>1</p>
            <p>3dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p>
            <p>3dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p>
            <p>3dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p>
            <p>3dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p> 
            
            <div class="neto">fechar</div> </div>   	
    	
        </div>
    <div class="pai"><p>clique aqui para ler:</p>

        <div class="filho">
        	<p>2</p>
            <p>3dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p>
            <p>3dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p>
            <p>3dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p>
            <p>3dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p> 
        
        <div class="neto">fechar </div>
    
        </div>    	
        
    </div>
    <div class="pai"><p>clique aqui para ler:</p>

        <div class="filho">
        	<p>3</p>
            <p>dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p>
            <p>3dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p>
            <p>3dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p>
            <p>3dlakjsdkjasdljaslkdjasjdlkjaslkdjas</p> 
        <div class="neto">fechar </div>
    
        </div>    	
        
    </div>
</body>
</html>

dá uma olhada ai! :D

vamos conseguir! tenha fé! kkkk

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um teste básico claro precisa de uma refatoração. Mas segue um script que pode ajudar.

(function(){
var $infos = $('.produtos-box-info');
var $boxes = $(".produtos-box");

//Unregister
$(".produtos > .produtos-box > .produtos-box-info > .titulo-produto > .fechar").unbind('click');
$boxes.unbind('click');

$infos.hide();

//Register
$infos.find('.fechar').unbind('click').bind('click', function(e) {
var $info = $(this).closest('.produtos-box-info');
$info.hide();
e.preventDefault();
return false;
});

//Register
$boxes.unbind('click').bind('click', function() {
$infos.hide();

var $info = $(this).find('.produtos-box-info');
$info.show();
});
})();

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por ILR master
      Salve galera.
       
      Vou publicar um evento e quero colocar um Cronômetro regressivo que mostre em tempo real os dias, horas e minutos que faltam para determinada data, tipo:.
      Faltam 5 dias, 12:30:00 para inauguração.
       
      Qdo chegar no dia, quero que apenas apareça uma mensagem.
       
      Alguém pode me ajudar?
    • Por Alessandro Bodão
      Fala galerinha, 
       
      Tenho um container com um título (h1) no cabeçalho do meu site, esse container ocupa metade da tela (50vw), e eu gostaria que esse título ocupasse toda a largura desse container, independente do seu tamanho ou do tamanho do monitor, de forma com que a palavra tenha exactamente o mesmo tamanho do container (vou anexar uma foto de exemplo). Já tentei todos os valores pra essa h1, como % e vw... mas nada parece fazer sentido.
       
       

    • Por gersonab
      bom dia
      tenho uma aplicação onde gero um arquivo em pdf, gostaria de recuperar a url do pdf q foi criado, pois quando este é criado ele abre automaticamente e ou ja faz o download do mesmo, preciso da url para enviar para outros.
      <button type="button" class="btn btn-outline-primary" onclick="createPDF();">Imprimir</button> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.4.1/jspdf.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/canvas2image@1.0.5/canvas2image.min.js"></script> <script language="javascript"> (function($){ $.fn.createPdf = function(parametros) { var config = { 'fileName':'html-to-pdf' }; if (parametros){ $.extend(config, parametros); } var orig = $(this); var widthOrig = $(orig).width(); $(orig).width(900); var quotes = document.getElementById($(orig).attr('id')); html2canvas(quotes, { onrendered: function(canvas) { var pdf = new jsPDF('p', 'pt', 'letter'); for (var i = 0; i <= quotes.clientHeight/900; i++) { var srcImg = canvas; var sX = 0; var sY = 900*i; var sWidth = 900; var sHeight = 900; var dX = 0; var dY = 0; var dWidth = 900; var dHeight = 900; window.onePageCanvas = document.createElement("canvas"); onePageCanvas.setAttribute('width', 900); onePageCanvas.setAttribute('height', 900); var ctx = onePageCanvas.getContext('2d'); ctx.drawImage(srcImg,sX,sY,sWidth,sHeight,dX,dY,dWidth,dHeight); var canvasDataURL = onePageCanvas.toDataURL("image/png", 1.0); var width = onePageCanvas.width; var height = onePageCanvas.clientHeight; if (i > 0) { pdf.addPage(612, 791); } pdf.setPage(i+1); pdf.addImage(canvasDataURL, 'PNG', 20, 40, (width*.62), (height*.62)); // Retirar o comentário caso queira ver como está sendo gerado o canvas. //document.body.appendChild(onePageCanvas); } pdf.save(config.fileName); $(orig).width(widthOrig); } }); }; })(jQuery); function createPDF() { $('#renderPDF').createPdf({ 'fileName' : '<?php echo $usercli['idocl']; ?>' }); }  
    • Por gersonab
      Boa tarde a todos.
      tenho pesquisado e ainda não encontrei uma forma de montar uma imagem online, tipo, tenho uma área de 400px por 400px , nesta gostaria de acrescentar algumas imagens que já tenho, tipo clicar e arrastar para dentro, sendo que estas imagens já se encontram online no site, seria mais ou menos assim : poderia colocar dentro desta área uma imagem do gato , do cachorro e ou outra. Não sei qual biblioteca ou forma de fazer.
      gostaria da ajuda para iniciar, desde já agradeço.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.