Показать сообщение отдельно
  #1 (permalink)  
Старый 03.10.2012, 13:13
Новичок на форуме
Отправить личное сообщение для Douglas Посмотреть профиль Найти все сообщения от Douglas
 
Регистрация: 03.10.2012
Сообщений: 4

В IE несколько раз вызывается обработчик click
Проблема немного похожа на эту live click выполняется несколько раз , только метода live в коде нет.
Код такой:
var $jq=jQuery.noConflict();
$jq(function() {
	var popupWindowCloseHandler = function(event) {
		event.preventDefault();
		$jq('body').children('.popup-window-shadow').fadeOut('fast').remove();
		$jq('body').children('.popup-window-box').fadeOut('fast').remove();
	};

	var popupWindow = function(url) {
		var box = $jq(document.createElement('div'));
		box.addClass('popup-window-box');
		var shadow = $jq(document.createElement('div')).appendTo('body');
		shadow.addClass('popup-window-shadow')
			.append('<span></span>')
			.fadeIn('fast')
			.click(popupWindowCloseHandler);
		$jq.ajax({
			url: url,
			contentType: "text/html; charset=windows-1251",
			success: function(html) {
				box.append(html).appendTo('body');
				box.fadeIn('fast')
					.css('margin-left', '-'+ (box.width() / 2) +'px')
					.find('.popup-window-close')
						.click(popupWindowCloseHandler);
alert(1);

		         my_top = ($jq(document).scrollTop() + (($jq(window).height() - box.height()) / 2));
		         if (my_top<0) {my_top = 0;}
		         my_top += 'px';
			     box.css('top', my_top);
			}
		});
	};
	
	$jq('.popup-window').click(function(event) {
		event.preventDefault();
		popupWindow(this.href);
	});
});

Соответственно, при нажатии на ссылку класса popup-window создается "тень" во всю страницу, затем сверху показывается окно.
Проблема в том, что если это окно закрыть (кликом по "тени"), а затем нажать ссылку еще раз, каким-то образом снова вызываются все предыдущие экземпляры popupWindow. Это видно по alert'у, а дебаггер их не замечает. Это происходит в IE, а в других браузерах, похоже, нет.
В чем может быть дело?

Последний раз редактировалось Douglas, 03.10.2012 в 17:51.
Ответить с цитированием