Ir para conteúdo

Arquivado

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

FelipeSAMA

[Resolvido] Fechar fancybox que carrega outra página por dentro a

Recommended Posts

O que eu entendi:

 

você chama o modal na tua index.

O modal é carregado como um iframe, certo ?

 

 

então você deveria fazer uma função apartir desse iframe, q acessasse a página mãe (index.php), fizesse o .load() do idioma escolhido. Entendeu ?

 

 

Para de dentro do iframe, disparar uma função do objeto pai, você pode usar o parent.funcao(), sendo funcao(), uma function declarada na index.php;

 

 

 

Dessa forma você não precisa do GET, e já q tá usando ajax para não ter reload, evita o reload atual q o teu iframe provavelmente está enviando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara descupa eu não so programador...

 

Quando você fala de modal eu não sei ao que se refere más imagino que você esteja querendo dizer que eu chamo uma pagininha de idiomas dentro da janela lightbox, carregando dentro dela, como se gfosse um iframe.. e também que o get se torna desnecessario?

 

bom... pode até ser, eu nao manjo muito mas eu usei php porque tneho uma otra pagina parecida que usei ajax com get e deu certo

 

dentro do iframe eu usei uma função

 

<script>

	jQuery(document).ready(function() {

		$('#english').click(function(){
			parent.$.fancybox.close();
			idiom = 'en';
			$('#body').load('PHP/index_ES.php');
		});
		$('#espanol').click(function(){
			parent.$.fancybox.close();
			idiom = 'es';
			$('#body').load('PHP/index_ES.php');
		});
		$('#portugues').click(function(){
			parent.$.fancybox.close();
			idiom = 'pt';
			$('#body').load('PHP/index_PT.php');
		});

	});
	</script>

 

Então você esta querendo dizer q so falta colocar uma função parent q resolve?

Compartilhar este post


Link para o post
Compartilhar em outros sites

com isso aqui:

 

$('#body').load('PHP/index_ES.php');

você está carregando esse arquivo dentro do iframe.

 

sim, qndo eu digo modal, estou falando do lightbox.

Estou chamando ele de iframe, pq foi assim q você definiu q ele deve ser ali, no instanciamento do plugin.

 

 

Como está o html do teu idiom.php ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<!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>
	<title>idiom</title>

	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
	<script type="text/javascript" src="js/browserDetect.js" ></script>
	<link href="css/fancy.css" type="text/css" rel="stylesheet" media="screen" />

	<script>

	jQuery(document).ready(function() {

		$('#english').click(function(){
			alert('primeira fase completa');
			parent.$.fancybox.close();
			idiom = 'en';
			$('#body').load('PHP/index_ES.php');
		});
		$('#espanol').click(function(){
			parent.$.fancybox.close();
			idiom = 'es';
			$('#body').load('PHP/index_ES.php');
		});
		$('#portugues').click(function(){
			parent.$.fancybox.close();
			idiom = 'pt';
			$('#body').load('PHP/index_PT.php');
		});

	});
	</script>
</head>
<body>

<div id="idioma" >
<div id="choose">	
</div>
<div id="options">

	<div class="idiom-option" id="english">English</div>
	<div class="idiom-option" id="espanol">Español</div>
	<div class="idiom-option" id="portugues">Português</div>
</div>
</div>

</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, então você está clicando em uma DIV

 

faça o seguinte na idiom.php

 

jQuery(document).ready(function() {   
      $('.idiom-option').click(function(){
          switch( $( this ).attr('id') )
          {
              case 'espanhol':
                  var file = 'PHP/index_ES.php'; break;
              case 'portugues':
                  var file = 'PHP/index_PT.php'; break;
              default:
                  var file = ''; break;
          }
          if( file )
              parent.$('#body').load( file );

          parent.$.fancybox.close();
      });
});

E então na sua index.php:

jQuery(document).ready(function() {
   $.fancybox('idiom.php',
   {
       'transitionIn'  : 'elastic',
       'transitionOut' : 'elastic',
       'padding': 0,
       'margin': 0,
       'type': 'iframe',
       'width': 200,
       'height': 208,
       'hideOnContentClick': true,
       'hideOnOverlayClick': false,
       'scrolling': 'no',
       'overlayColor': '#58595B',
       'overlayOpacity': 0.53,
       'opacity': true,
       'centerOnScroll': true,
       'showCloseButton': false
   }
   );
});

Acredito que isso resolva.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal cara.. esse ano eu dei uma lida na documentação do php e não sabia que existia switch no jquery,

 

Cabei de ler sobre a função parent no site e pelo que eu entendi o parent servre pra achjar o elemento pai do div.. sendo o contrario de .children()

 

Mas o body não é pai de nenhum deles, ele está em outr nivel acima, é página mãe, mas tudo brm vou testar

Compartilhar este post


Link para o post
Compartilhar em outros sites

vixi.. calma ai q vou esclarecer algumas coisas:

 

e não sabia que existia switch no jquery,
não é no jQuery.

é no javascript. jQuery não é uma outra linguagem, é só uma biblioteca escrita sob a linguagem javascript.

switch() é uma estrutura da linguagem.

 

 

Cabei de ler sobre a função parent no site e pelo que eu entendi o parent servre pra achjar o elemento pai do div.. sendo o contrario de .children()

na verdade não.

Estou usando o parent. do js e não o .parent() do jQuery.

São completamente diferentes.

 

o parent. acessa a página mãe do iframe.

 

Algumas leituras interessantes:

http://wbruno.com.br/blog/2011/04/04/nao-jquery-nao-aprenda-qualquer-framework-antes-de/

http://wbruno.com.br/blog/2011/07/18/vixi-aprendi-jquery-mas-agora/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom saber.... Cabei de testar aqui o que você me mandou e deu certo!

Agradeço!

 

Eu fiz um curso em São Paulo que ensinava xhtml com um pouco de jquery mas achei muito podre, sendo que era de uma escola conceituada eu esperava mais. Aprendi quase nada la dentro e saiu caro pra kcte.

 

Um dos professores me disse que jquery era ajax... Mas eu acabei descobrindo que na verdade jquery é uma linguagem baseada no javascript que diminui o tamanho do código mas não é ajax, ela só tem suporte pra ajax.

E otra coisa, foi dito que se eu estudasse jquery tornaria javascript inutil, então eu fiquei empolgado com a ideia de que o jquery é mais objetivo e não precisa manjar muito de programação e até abandonei meu livro de javascript que tava lendo.

 

Obrigado pela dica!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom saber.... Cabei de testar aqui o que você me mandou e deu certo!

Agradeço!

que bom!! fico feliz ! :lol:

 

Aprendi quase nada la dentro e saiu caro pra kcte.

"normal"..

 

 

Um dos professores me disse que jquery era ajax...

manda esse meu artigo aqui para o seu professor:

http://wbruno.com.br/blog/2011/04/08/o-que-e-ajax-e-o-que-nao-e/

 

na verdade jquery é uma linguagem baseada no javascript que diminui o tamanho do código

não !!

jQuery é uma biblioteca, e somente isso.

Não chame de linguagem, pq jQuery não é uma linguagem.

 

é uma biblioteca para facilitar, somente isso. Ela encapsula rotinas complicadas do js, em funções fáceis de usar. Somente isso.

 

 

foi dito que se eu estudasse jquery tornaria javascript inutil

esqueça essa baboseira e volte para o seu livro de js.

 

 

 

A minha maior bronca com os professores de escolas de informática é: a maioria deles NAO trabalha com oq ensina.

Então a visão deles, é limitada a aula, e ele nem possui experiencia do q está tentando ensinar. Por isso são tão ruins os cursos por ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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