Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

Marik

Jquery + Fancybox

Рекомендуемые сообщения

Приветствую. Есть страница, на ней

<a id="change_region" href="<?php echo $this->url->http('checkout/address/shipping'); ?>" class="blue_button" style="margin-left: 5px;"><span>изменить</span><span class="after"> </span></a>
<script type="text/javascript">
$(document).ready(function() {
$("#change_region").fancybox({
	'padding'			:	10,
	'centerOnScroll'	:	true,
	'showCloseButton'	:	true,
	'hideOnOverlayClick':	false,
	'hideOnContentClick':	false,
	'showCloseButton'	:	true,
	'callbackOnShow'	:	function() { $("#fancy_ajax").scrollTo(0,0); }
});
});
</script>

Соответственно в fancybox загружаем ajax-ом страницу $this->url->http('checkout/address/shipping'). Тут все ок.

На самой загружаемой странице есть

<a onclick="$.fn.fancybox.close(this);" class="blue_button"><span><?php echo $button_cancel; ?></span><span class="after"> </span></a>

Но при клике firebug выдает ошибку и всплывшее окошко не закрывает:

opts is undefined
anonymous()		index.ph...ent/seq/2 (строка 14)
function onclick(event) { $.fn.fancybox.close(this); }(click clientX=645, clientY=383)		index.ph...ent/seq/3 (строка 2)
[Break on this error] <link rel="stylesheet" type="text/css" h...fancybox/jquery.fancybox-1.2.6.css" />\r\n

При этом контрол самого fancybox нормально работает. Как сделать так, чтобы кнопка закрывания fancybox в загружаемом Ajax-ом документе нормально работала?

 

PS: Уже пробовал onclick="$(this).fancybox.close();" эффект тот же.

PPS: Вот строчка на которую ссылается firebug

function _preload_neighbor_images() {if (opts.itemArray.length - 1 > opts.itemCurrent) {var a = opts.itemArray[opts.itemCurrent + 1].href || false;if (a && a.match(imageRegExp)) {objNext = new Image;objNext.src = a;}}if (opts.itemCurrent > 0) {var a = opts.itemArray[opts.itemCurrent - 1].href || false;if (a && a.match(imageRegExp)) {objNext = new Image;objNext.src = a;}}}

судя по всему, это код который генерирует сам fancybox, создавая свой объект. но почему эта функция? непонятно...

PPPS: Win32, Firefox 3.5.5, Chrome 3.0.195.33

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да. На всякий, вот код функции close из fancybox

	$.fn.fancybox.close = function() {
	busy = true;

	$(imagePreloader).unbind();

	$(document).unbind("keydown.fb");
	$(window).unbind("resize.fb scroll.fb");

	$("#fancy_overlay, #fancy_content, #fancy_close").unbind();

	$("#fancy_close, #fancy_loading, #fancy_left, #fancy_right, #fancy_title").hide();

	__cleanup = function() {
		if ($("#fancy_overlay").is(':visible')) {
			$("#fancy_overlay").fadeOut("fast");
		}

		$("#fancy_content").empty();

		if (opts.centerOnScroll) {
			$(window).unbind("resize.fb scroll.fb");
		}

		if (IE6) {
			$('embed, object, select').css('visibility', 'visible');
		}

		if ($.isFunction(opts.callbackOnClose)) {
			opts.callbackOnClose();
		}

		busy = false;
	};

Удивительно для меня то, что opts, т.е. параметры всплывающего окошка всегда заданы, даже если не задавать никаких параметров при создании.

Значит они где-то до вызова close удаляются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброе время суток.
Нужна ваша помощь по созданию jquery слайдера наподобие http://net.uanic.name/ , в хейдере с правой стороны. Дайте пожалуйста пример подобного слайдера.
Рассмотрю вариант создания слайдера за символическую плату.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты