Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Плавный выезд (JQuery) блока в IE (https://javascript.ru/forum/dom-window/3087-plavnyjj-vyezd-jquery-bloka-v-ie.html)

Ozzy 17.03.2009 12:35

Плавный выезд (JQuery) блока в IE
 
Добрый день.

Сделал плавный выезд блока "Возможные варианты поверхности" вот здесь http://www.zamokk.ru/goods/element.p...SECTION_ID=808.

Так вот в FF и Opera всё прекрасно выезжает, а в IE нивкакую.

Использую функцию
$('div.smooth').show('blind', {direction:'vertical'}, 'slow');

Gvozd 17.03.2009 12:54

честно говоря не самое лучшее "украшательство":-E
по сути же:нафига вы переопределяете функцию $ ?

Ozzy 17.03.2009 13:19

Цитата:

Сообщение от Gvozd (Сообщение 14499)
честно говоря не самое лучшее "украшательство":-E
по сути же:нафига вы переопределяете функцию $ ?

Требование ТЗ: выпадение вертикальное плавное.
Функция переопределяется для вертикального выпадения, т.к. по-умолчанию выезд из левого верхнего угла.

Gvozd 17.03.2009 13:26

function $(id) {
		if ( document.getElementById(id) != null )
		{
			return document.getElementById(id);
		}
	}

Это ваше?
этот функционал есть и в jQuery, так что зачем такая функция нужна, мне непонятно.тем более что $() у вас везде используется как функция jQuery
короче говоря мне непонятно на каких магических чилах этот скрипт работает в первых двух браузерах, и пытается работать в осле.

попробуйте покапатся в кодах jQuery, и выясните что такого некросбраузерного они ипсользуют в вашем случае

Ozzy 18.03.2009 11:04

Цитата:

function $(id) {
        if ( document.getElementById(id) != null )
        {
            return document.getElementById(id);
        }
    }

Поясните, пожалуйста, где такая строка в коде. Что-то я её не нахожу.

Следующий момент:
Цитата:

этот функционал есть и в jQuery, так что зачем такая функция нужна, мне непонятно.тем более что $() у вас везде используется как функция jQuery
а каким образом совмещение JQuery и не JQuery может повлять на работу скрипта?

Цитата:

короче говоря мне непонятно на каких магических чилах этот скрипт работает в первых двух браузерах, и пытается работать в осле.
Так вы же не разбирались детально в коде, чтобы понять как работает.

Gvozd 18.03.2009 12:06

Цитата:

Сообщение от Ozzy
Поясните, пожалуйста, где такая строка в коде. Что-то я её не нахожу.

начиная с 75 строчки прямо в теле стрвницы по вашей ссылке

Цитата:

Сообщение от Ozzy
а каким образом совмещение JQuery и не JQuery может повлять на работу скрипта?

если вы переопределяете основную функцию jQuery($().Она же jQuery()), урезая функцинал, то это не есть хорошо.
в jquery есть какая-то приблуда, позволяющая ей отказатся от $(). и вызыватся только с помощью jQuery()

Цитата:

Сообщение от Ozzy
Так вы же не разбирались детально в коде, чтобы понять как работает.

уже понял. определение вашей функции находится до подключения jQuery, поэтому jQuery все-таки тянет одеяло на себя.

а вообще совет в моем случае остается тот же:
смотреть исходные коды, и разбиратся.
когда работаете с чужими фреймворками иногда приходится таким заниматся.
еще можно попытатся обновить jquery и все его модули вами задействованные до последних версий(если это сейчас не так) в надежде, что они поправили глюк

yuryspb 21.03.2009 02:37

В JQuery я использовал такой способ:
<script>
  $(document).ready(function(){
    
    $("#block1").mouseover(function(){
      $("#block1").animate( { width:"390px" }, { queue:false, duration:1000 } )
    });
    $("#block1").mouseout(function(){
      $("#block1").animate( { width:"40px" }, { queue:false, duration:1000 } )
    });
  
});
  </script>

x-yuri 23.03.2009 07:26

где у тебя обработчик назначается?

Ozzy 23.03.2009 09:52

Цитата:

Сообщение от x-yuri (Сообщение 14912)
где у тебя обработчик назначается?

Кому вопрос?

x-yuri 23.03.2009 18:50

Ozzy, к тебе, в общем-то. Я так понял, что проблема еще не решена?

Ozzy 23.03.2009 21:54

При нажатии на radio срабатывает функция loadElement в которой вызывается вот такой код:
$('div.smooth').hide("blind", {direction:'vertical'}, 'slow');


Это выглядит так:
<input id="276_1" name="PROP_276" value="122" onclick="loadElement({'PARAMS':'','ATTENDTS':['3080']}, {'276':{'_0_':'0','_1_':'1'}}, ['4722','4723','4722']);" type="radio">

function loadElement(arParams, arConfPropId, arPRODUCT_ID)
{
...
$('div.smooth').hide("blind", {direction:'vertical'}, 'slow');
...
}

x-yuri 24.03.2009 15:54

1. Что ты хочешь сообщить функции hide такими вот ("blind", {direction:'vertical'}, 'slow') параметрами? http://docs.jquery.com/Effects/hide#speedcallback

2. у тебя в IE ошибка возникает - включи отладку и посмотри в отладчике (странно, что в ff все ok с этим)

Ozzy 24.03.2009 16:26

Цитата:

Сообщение от x-yuri (Сообщение 15058)
1. Что ты хочешь сообщить функции hide такими вот ("blind", {direction:'vertical'}, 'slow') параметрами? http://docs.jquery.com/Effects/hide#speedcallback

Я же писал: "плавный ВЕРТИКАЛЬНЫЙ выезд".
http://docs.jquery.com/UI/Effects/Blind

x-yuri 24.03.2009 21:36

так происходит из-за бага/фичи IE:
$('#el')[0].style.overflow = 'hidden';
$('#el')[0].style.height = '0.1px';

в результате opera и ff (в отличие от ie) скрывают элемент, а ie подстраивает высоту под высоту содержимого

x-yuri 24.03.2009 22:31

но на самом деле этот баг ie проявляется только в quirks mode ;-)


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