В IE несколько раз вызывается обработчик click
Проблема немного похожа на эту http://javascript.ru/forum/jquery/98...kolko-raz.html , только метода 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, а в других браузерах, похоже, нет. В чем может быть дело? |
У меня не получилось воспроизвести вашу ошибку в ИЕ9 и ИЕ8: http://jsbin.com/uvaqoh/1/
Видимо проблема не в данном участке кода. |
Часовой пояс GMT +3, время: 15:13. |