Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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.
Ответить с цитированием
  #2 (permalink)  
Старый 03.10.2012, 23:07
Аватар для antonM
Кандидат Javascript-наук
Отправить личное сообщение для antonM Посмотреть профиль Найти все сообщения от antonM
 
Регистрация: 11.08.2011
Сообщений: 103

У меня не получилось воспроизвести вашу ошибку в ИЕ9 и ИЕ8: http://jsbin.com/uvaqoh/1/
Видимо проблема не в данном участке кода.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Confirm несколько раз. prowoke jQuery 3 05.09.2012 17:14
Событие click вызывается несколько раз. Почему? rusbody jQuery 22 21.08.2012 16:17
Сменить обработчик click floa Events/DOM/Window 2 06.08.2012 11:22
Обработчик click вызывается несколько раз или не всегда вызывается OlegJquery jQuery 2 21.07.2011 20:37
live click выполняется несколько раз hara jQuery 9 09.06.2010 10:58