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 Danilo - Jesus voltará!
      Olá pessoal, tenho uma div a qual através de um select categorias eu trago dados de empresas do banco, aí preciso clicar nas listagens das empresas e pegar o ID quando clica no checkbox e gravar pelo ajax novamente na session feita no arquivo php tipo um carrinho de compras, que essa parte já tenho... só não to conseguindo pegar os ids gerados dinamicamente no retorno feito do ajax, eles aparecem com F12 ao inspecionar, mas não aceita eu clicar para pegar o ID, acho que é algo de DOM, mas não to sabendo fazer... alguém aí saberia me ajudar como pegar esses ids ao clicar, já que eles vem dinamicamente?
       
      obrigado
    • Por joeythai
      Boa tarde pessoal,
       
      eu criei uma página da qual tenho diversos checkbox para marcar, se tiver alguma caixinha marcada eu habilito um botão para fazer o envio ao servidor, porém, está acontecendo um problema que não consegui identificar, o que está acontecendo é o seguinte:
       
      Quando eu marco um checkbox apenas, o botão é liberado, eu clico nele e aparece um modal para preencher os dados, e nesse modal tem um combobox com opções criadas em javascript, como tem somente uma caixinha marcada as informações no combobox aparecem perfeitamente, porém, se eu marco 2 checkbox ou mais as opções do combobox se repetem, como se eu tivesse fazendo isso dentro de um looping, o que não é verdade, eis o codigo abaixo:
       
      <code>
        <!DOCTYPE html>    <html lang="en">  
         <head>   <meta charset="UTF-8">   <meta http-equiv="X-UA-Compatible" content="IE=edge">   <meta name="viewport" content="width=device-width, initial-scale=1.0">   <title>Document</title>   </head>  
        <body>   <input id="check-belongings" class="custom-control-input check-belongings" name="" type="checkbox" value="">   <label for="" class="custom-control-label"></label>   <div class="col-12">   <div class="md-form mt-0 mb-0 pt-0 pb-0">   <label for="reason">Motivo</label><br><br>  
        <select class="form-control md-select2" style="width: 100%; text-transform: uppercase"   id="reason_all_belongings" name="reason_all_belongings" required>   </select>   </div>   </div>
       
        <script>  
         $('.check-belongings').click(function () {    let belongingsIds = [];    let listaMarcados;  
         let optionsReason = [];   let option = null;  
        let movementsSelect = document.getElementById("reason_all_belongings");  
        optionsReason = ['Conferencia', 'Desobstrução', 'Entrega ao Cliente/Propr','  Inspeção', 'Manobra', 'Venda'  ];  
        optionsReason.forEach((reason) => {   option = new Option(reason, reason.toLowerCase());   movementsSelect.options[movementsSelect.options.length] = option;   });  
        listaMarcados = document.getElementsByClassName("check-belongings");   for (let loop = 0; loop < listaMarcados.length; loop++) {   var item = listaMarcados[loop];  
         if (item.type == "checkbox" && item.checked) {    $('.drop-all-belongings').removeAttr('disabled');    belongingsIds.push(item.value);    } else { // $('.drop-all-belongings').attr('disabled', 'disabled');   }   }   });   </script>   </body>  
        </html> </code>
×

Informação importante

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