В IE есть деталь реализации, известная как hasLayout, которая, к сожалению, часто пропускает абстракцию API и должна решаться в лоб ... Это битва, с которой вы сталкиваетесь сегодня: встроенных элементов обычно не будет "layout "и, следовательно, не будет работать с" фильтрами "... которые jQuery использует для имитации прозрачности в IE.
Это не ново в IE8, и обычно вам вообще об этом не нужно беспокоиться, поскольку именно такого рода безумие, связанное с браузером, jQuery предназначено для написания ... Действительно, это так.почему я не удосуживаюсь вдаваться в подробности о том, что на самом деле означают hasLayout и filters - вам, вероятно, все равно, и вам это не нужно (но, если вам интересно, Google это ...)
Проблема в том, что хак, который jQuery использует под капотом для принудительного размещения макета (поэтому работают фильтры (поэтому он может имитировать непрозрачность (поскольку IE не реализует это))) ... он не работает наIE8.Разве это просто замечательно, а?Они исправили ошибку, из-за которой элементы display: inline
вели себя как элементы display: inline-block
, но пренебрегали возможностью реализовать функцию, которую люди использовали для исправления ошибки в поддержку ...
Что ж, с этим ничего не поделаешьтот.Если вы напишете плохое электронное письмо в Team IE, вы можете почувствовать себя немного лучше, но они очень усердно работают над IE9, который должен (стучать по дереву ...) решить большинство из этих проблем.А пока вам нужно будет просто вручную выполнить то, что IE использовал (вроде, вроде, и, скорее всего, неправильно), само по себе: принудительно включить встроенный элемент в режим inline-block:
$("myInlineElement").css({display: 'inline-block'}).faceOut();
... или еще лучше, поместите его в таблицу стилей только для IE8 ...