Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Jquery, Ajax, IE (https://javascript.ru/forum/jquery/8565-jquery-ajax-ie.html)

Octane 03.04.2010 10:16

Для эмуляции CSS-свойства opacity в IE jQuery использует фильтр Alpha. Для всех элементов, к которым применяется фильтр, IE отключает сглаживание текста. Важен факт наличия фильтра, а не значение параметра opacity, поэтому фильтр нужно удалить вообще, что можно сделать очисткой свойства cssText (или удалением подстроки с описанием фильтра), так как jQuery добавляет CSS-стили в атрибут style элемента.

Айба 03.04.2010 10:16

а не отрабатывает она потому что:
Цитата:

var dbox = $(".text-sec");
а в тот момент элемент не:
$(".text-sec")

а
$(".text-sec loading")

я с jquery не сильно знаком, но думаю смысл понятен.

можно попробовать вместо присвоения
Цитата:

var dbox = $(".text-sec");
использовать :
$(".text-sec");

Octane 03.04.2010 10:34

Айба, совсем не в тему.

Айба 03.04.2010 10:44

Octane,
ну значит я заметил просто особенность поведения данной программы в ie, подумал что это важно. Это было просто предположение ;)

doniv 03.04.2010 10:45

Цитата:

Сообщение от Айба (Сообщение 49953)
В IE эта строка не отрабатывает и класс loading остается, из-за этого по видимому и сглаживания нет.

Неа, хотя класс действительно не там удалял :) спасибо :)

doniv 03.04.2010 10:55

Цитата:

Сообщение от Octane (Сообщение 49954)
Для эмуляции CSS-свойства opacity в IE jQuery использует фильтр Alpha. Для всех элементов, к которым применяется фильтр, IE отключает сглаживание текста. Важен факт наличия фильтра, а не значение параметра opacity, поэтому фильтр нужно удалить вообще, что можно сделать очисткой свойства cssText (или удалением подстроки с описанием фильтра), так как jQuery добавляет CSS-стили в атрибут style элемента.

Я меняю это:

success: function(boxtext){
				if	($(linkclass).attr("class") != "active") {
					dbox.animate({ opacity: "0.1"  }, 0).animate({ opacity: "1"  }, 400);
					dbox.html(boxtext);
				}
					dbox.removeClass('loading');
					$(".inlink a").removeClass("active");
					linkclass.addClass("active");
	}


На это:
success: function(boxtext){
				if	($(linkclass).attr("class") != "active") {
					dbox.animate({ opacity: "0.1"  }, 0).animate({ opacity: "1"  }, 400);
					dbox.html(boxtext);
				}
					dbox.removeClass('loading');
					$(".text-sec").style.cssText = "";
					$(".inlink a").removeClass("active");
					linkclass.addClass("active");
	}


И ничего. Где я косячу? запутался. :help:

Octane 03.04.2010 11:01

$(".text-sec").get(0).style.cssText = "";


Screenshot

doniv 03.04.2010 11:15

Цитата:

Сообщение от Octane (Сообщение 49965)
$(".text-sec").get(0).style.cssText = "";


Screenshot

Эм, все верно. Стиль очищается. Но сглаживание не возвращается :)

Octane 03.04.2010 15:00

Все сглаживается нормально

У вас не выходит из-за того, что функция animate асинхронно выполняется. Очищайте стиль в callback-функции, вызываемой по окончании анимации.

doniv 03.04.2010 15:39

Цитата:

Сообщение от Octane (Сообщение 49992)
Все сглаживается нормально

У вас не выходит из-за того, что функция animate асинхронно выполняется. Очищайте стиль в callback-функции, вызываемой по окончании анимации.

Мне уже на самом деле стыдно, но как это сделать?
Совсем тупость вымораживает. По какому событию делать, где именно?
А почему не получается сделать после выполнения запроса, например в complete?


Часовой пояс GMT +3, время: 03:50.