Felipe Elia

ENPT

Evento .click() do jQuery não funciona em conteúdo do Fancybox

1 min de leitura

Usando a versão 1.2 do fancybox enfrentei um problema, aparentemente sem razão: associava um .click() por jQuery a um link e ele não tinha o comportamento esperado.

Depois de muito tentar (acho que) percebi o que acontecia. Ao usar conteúdo inline no fancybox, ele copia os elementos para formar a janela que se espera. Associando normalmente um comportamento a qualquer elemento, você associa ao original, a cópia não herda. Ou seja, no meu caso o link que era exibido não tinha mais associado o comportamento que eu queria.

A solução é associar na hora em que a janela é aberta, pela chave ‘callbackOnShow’ (na versão 1.2). No meu caso ficou assim:

JavaScript
$(document).ready(function () {
	(...)
	$("#page-index-call").fancybox({
		width				: 	'1000px',
		padding				:	0,
		overlayOpacity		:	1,
		overlayColor		:	'#000',
		hideOnOverlayClick	:	false,
		hideOnContentClick	:	false,
		enableEscapeButton     :	false,
		showCloseButton		:	false,
		<strong>callbackOnShow		: 	function () {
			$("#fancy_content .box_close").click(function(e) {
				e.preventDefault();
				e.stopPropagation();
				$("#wrapper").show();
				$.fn.fancybox.close();
			});			
		}</strong>
	});
	(...)
});

Não sei se na versão 1.3 (atual) já consertaram, mas se continuar, talvez seja preciso alterar a chave, uma vez que a API foi atualizada.

Gostou deste post? Receba o próximo por e-mail.

Novos artigos e ferramentas úteis, sempre que houver algo que valha compartilhar.

Sem frequência fixa. Sem spam. Cancele quando quiser.

Uma resposta para “Evento .click() do jQuery não funciona em conteúdo do Fancybox”

  1. Avatar de yure carvalho
    yure carvalho

    Eu não estou conseguindo validar um formulário com jquery que foi carragado pelo fancybox através de um iframe.
    me ajudem!