Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.12.2012, 15:35
Интересующийся
Отправить личное сообщение для saxap Посмотреть профиль Найти все сообщения от saxap
 
Регистрация: 09.09.2012
Сообщений: 17

зациклить функцию
Уважаемые эксперты прошу помощи!
Делаю проверку на величину сколинга на странице, если значение больше 500 - показываем див, если нет - убираем.
Но проблема в том что в опере функция срабатывает 1 раз - див появляеться и остается там навсегда даже, если скролинг = 0, причем если вставить алерты, то все работает.
вот код:
$(document).ready(function(){
 $(window).scroll(function(){
   var y = $(window).scrollTop();
  if( y > 500 ){
   $("div.div").delay(500).fadeIn(500);
  } else {
  $("div.div").fadeOut(500);
  }
 });
})

Последний раз редактировалось saxap, 09.12.2012 в 15:45.
Ответить с цитированием
  #2 (permalink)  
Старый 10.12.2012, 19:05
Интересующийся
Отправить личное сообщение для saxap Посмотреть профиль Найти все сообщения от saxap
 
Регистрация: 09.09.2012
Сообщений: 17

еще актуально((
в ие и хроме работает нормально, в мозиле и опере - нет
Ответить с цитированием
  #3 (permalink)  
Старый 10.12.2012, 20:31
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Проблема, видимо, в том, что при скроллинге вы запускаете большое количество анимаций (.fadeIn(), .fadeOut()). Например, достигая величины прокрутки в 500px, вы запускаете .fadeIn(), и если продолжать прокручивать страницу, .fadeIn() будет вызываться всё снова и снова (т.к. условие y > 500 выполняется), и очередь анимаций будет расти.
Как вариант, можно добавить проверок, чтобы избежать повторных вызовов.
$(document).ready(function(){
 var showing = false;
 $(window).scroll(function(){
   var y = $(window).scrollTop(),
       div = $("div.div"),
	   isVisible = div.is(":visible");
  if (y > 500 && !showing) {
	showing = true;
    div.delay(500).fadeIn(500);
  } else if (y < 500 && isVisible && showing) {
	showing = false;
    div.fadeOut(500);
  }
 });
});
Ответить с цитированием
  #4 (permalink)  
Старый 10.12.2012, 22:07
Интересующийся
Отправить личное сообщение для saxap Посмотреть профиль Найти все сообщения от saxap
 
Регистрация: 09.09.2012
Сообщений: 17

Да, вы правы, если поставить алерты, то окошки появляются по 100 раз.
Огромное спасибо вам за код и разжовывание.
Ответить с цитированием
  #5 (permalink)  
Старый 11.12.2012, 14:09
Кандидат Javascript-наук
Отправить личное сообщение для Mateus Посмотреть профиль Найти все сообщения от Mateus
 
Регистрация: 06.12.2012
Сообщений: 100

Дабы не открывать новую тему, спрошу здесь.
У меня похожее условие, если положение >240 то стиль box3,
если положение <240, то стиль box4

Но стиль меняется только 1 раз. Вот код:

$(document).ready(function(){

var y = $(window).scrollTop(),
div = $("div.div");
if (y > 240 && !showing) {
$('#hit').addClass("box3");
} else if (y < 240 && !showing) {
$('#hit').addClass("box4");
}
});
Ответить с цитированием
  #6 (permalink)  
Старый 11.12.2012, 19:55
Аватар для Margarita
Аспирант
Отправить личное сообщение для Margarita Посмотреть профиль Найти все сообщения от Margarita
 
Регистрация: 14.09.2012
Сообщений: 83

перед добавлением нового класса, убирайте старый
removeClass
Ответить с цитированием
  #7 (permalink)  
Старый 12.12.2012, 12:33
Кандидат Javascript-наук
Отправить личное сообщение для Mateus Посмотреть профиль Найти все сообщения от Mateus
 
Регистрация: 06.12.2012
Сообщений: 100

Спасибо большое!
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запретить submit и запустить функцию yashka525 Events/DOM/Window 2 24.04.2012 05:14
Выполнить функцию заранее неизвестную Neokortex jQuery 2 13.02.2012 12:41
checkbox включен запускаем одну функцию выключен другую Sadist_dead Элементы интерфейса 11 27.09.2011 10:46
проблема с передачей параметров в функцию bartonom Элементы интерфейса 4 19.09.2011 12:41
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32