show/hide. Проблемы в IE
Здравствуйте. Имею простейший пример:
<div class="auth"> <ul> <li><a href="#">Зарегистрироваться</a></li> <li><a href="#">Войти</a></li> </ul> </div> <div id="auth-form"><img src="auth.png" alt="" /></div> $(document).ready(function(){ $(".auth li").eq(1).click(function(){ $("#auth-form").show("fast"); return false; }) $(document).click(function(e){ if (!$(e.target).closest('#auth-form').length) { $('#auth-form').fadeOut("fast"); } }); }); #auth-form { display: none; position: absolute; top: 30px; right: 10px; } Во всех браузерах работает, кроме IE. Если же у auth-form сделать display: block, то все работает, включая появление блока. Подскажите, как поправить? |
Во-первых, у IE не event.target, а event.srcElement. Во-вторых, IE не передаёт объект event в аргумент ф-ции обработчика события, всё в window.event. Ну в-общем, делать надо так:
e = e || window.event; x = e.srcElement || e.target; |
exec, этот скрипт рабочий. Мне тут на форуме подсказывали. Наверное и вы тоже, просто потом сократили его немного.
Проблема в ie была из-за: <!--[if IE]><script type="text/javascript" src="js/unitpngfix.js"></script><![endif]--> Сделал картинку в блоке не png, а gif и все заработало. Спасибо за помощь. |
Помогите и мне. Есть такой хтмл:
<div id="nautica_flags"> <img src="img/nautica/s.jpg" alt="S" width="16" style="display: inline;" /> <img src="img/nautica/a.jpg" alt="a" width="16" style="display: inline;" /> <img src="img/nautica/i.jpg" alt="i" width="16" style="display: inline;" /> <img src="img/nautica/l.jpg" alt="l" width="16" style="display: inline;" /> <img src="img/nautica/t.jpg" alt="t" width="16" style="display: inline;" /> <img src="img/nautica/o.jpg" alt="o" width="16" style="display: inline;" /> <img src="img/nautica/u.jpg" alt="u" width="16" style="display: inline;" /> <img src="img/nautica/r.jpg" alt="r" width="16" style="display: inline;" /> </div> И есть скрипт: function HideFlag(flag){ if(flag.is('img')){ flag.animate({opacity: "hide"}, 300, "swing", function(){ $("<span>"+flag.attr('alt')+"</span>").insertBefore(flag); HideFlag(flag.next()); }); } } function ShowFlag(flag){ if(flag.is('img')){ flag.prev().remove(); flag.animate({opacity: "show"}, 300, "swing", function(){ ShowFlag(flag.next('span').next()); }); } } $('.nautica .link a').click(function(){ if($('#nautica_flags span').length){ ShowFlag($('#nautica_flags img:first')); } else { HideFlag($('#nautica_flags img:first')); } return false; }); В ИЕ проблемма - скрывается нормально, а появляется только 3 рисунка :( Нашол решение проблеммы, по непонятным причинам не во всех элементах менялся стиль display: inblock, изменение этого стиля перед анимацией исправило проблемму |
Часовой пояс GMT +3, время: 17:08. |