Javascript.RU

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

для новостного слайдшоу jQuery
Долго думал, и решил всётки спросить у вас, мож ктонить знает как это реализовать. У меня идёт автоматическое слайдшоу через функцию сетинтервал, при клике мне нужно её остановить и если не было долгое время кликов, то заного должно запускаться слайдшоу.
var intervalID = setInterval(nextNewsAuto, time); // запускает авто слайдшоу
$(this).click(function() { //клик по следующей новости
   clearInterval(ttt); //удаляем сетинтервал
   $(this).each(nextNews); //при клике запустилась следующая новость
// а тут нужно чтобы через некоторое время запускалась функция nextNewsAuto и при клике чтобы она останавливалась
});
Кусок кода, можно сказать ключевой в реализации, остальное как бы не очень важно ....

Последний раз редактировалось qwermjk, 25.01.2011 в 15:57.
Ответить с цитированием
  #2 (permalink)  
Старый 25.01.2011, 16:18
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

мало кода,
может через settimeout какой-нибудь запускать, хз.
Ответить с цитированием
  #3 (permalink)  
Старый 25.01.2011, 16:23
Профессор
Отправить личное сообщение для qwermjk Посмотреть профиль Найти все сообщения от qwermjk
 
Регистрация: 31.01.2010
Сообщений: 229

кода достаточно, это основной кусок, где всё и должно происходить, а в остальное вникать нет смысла так как там ещё 50 строк кода.
Ответить с цитированием
  #4 (permalink)  
Старый 25.01.2011, 16:28
Профессор
Отправить личное сообщение для qwermjk Посмотреть профиль Найти все сообщения от qwermjk
 
Регистрация: 31.01.2010
Сообщений: 229

nextNewsAuto - эта функция автоматически запускает слайдшоу.
nextNews - эта функция для ручного просмотра новостей.

Этот кусок кода работает так:
1) setInterval заставляет новость меняться каждые time секунд
2) При клике на следующую новость срабатывает clearInterval, который убирает авто смену новостей
3) следом идёт смена новости при клике.
А дальше нужно чёнить придумать, чтобы через секунд 30 бездействия снова включалась функция nextNewsAuto
Ответить с цитированием
  #5 (permalink)  
Старый 25.01.2011, 16:33
Профессор
Отправить личное сообщение для qwermjk Посмотреть профиль Найти все сообщения от qwermjk
 
Регистрация: 31.01.2010
Сообщений: 229

Нужно ещё учесть то что при повторном клике этот весь код, который находится внутри анонимной функции, повторяется.
Ответить с цитированием
  #6 (permalink)  
Старый 25.01.2011, 22:36
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от qwermjk
при клике мне нужно её остановить и если не было долгое время кликов, то заного должно запускаться слайдшоу.
если пользователь остановил - это значит что он хочет, чтобы слайдшоу остановилось, а не запускалось вновь. Пусть даже спустя какое-то время
Ответить с цитированием
  #7 (permalink)  
Старый 25.01.2011, 22:42
Профессор
Отправить личное сообщение для qwermjk Посмотреть профиль Найти все сообщения от qwermjk
 
Регистрация: 31.01.2010
Сообщений: 229

Через пару часов мозговой атаки я решил эту проблему =)
Как было:
var intervalID = setInterval(nextNewsAuto, time);
$(this).click(function() {
   clearInterval(ttt);
   $(this).each(nextNews);
});
Недостатки: Нужно было чтобы после клика заново, через некоторое время, запускалась функция nextNewsAuto и чтобы прошлый сетинтервал удалялся, чтоб не было накладок.
Как стало:
function ffff() {
   var intervalID = setInterval(nextNewsAuto, time);
   return intervalID;
}

var ttt = ffff(), ddd = 0, rrr = 0;
$(this).click(function() {
   if(ddd == 0) {
      ddd = 1;
      clearInterval(ttt);
      rrr = setTimeout(function() { ttt = ffff(); ddd = 0; }, 10000);
   } else {
      clearInterval(rrr);
      rrr = setTimeout(function() { ttt = ffff(); ddd = 0; }, 10000);
   }
   $(this).each(nextNews);
});
Достоинства: Теперь всё нормально, функция nextNewsAuto нормально вызывается, без накладок, если идёт повторный клик то прошлый сеттаймаут удаляется ...

Последний раз редактировалось qwermjk, 25.01.2011 в 22:46.
Ответить с цитированием
  #8 (permalink)  
Старый 25.01.2011, 22:44
Профессор
Отправить личное сообщение для qwermjk Посмотреть профиль Найти все сообщения от qwermjk
 
Регистрация: 31.01.2010
Сообщений: 229

x-yuri, у меня как бы новостное слайдшоу, и типо остановка эта нужна чтобы новость какое то время не переключалась и оставалась видна и чтобы пользователь её прочёл, если интересен весь код, то я его доделаю и могу кинуть сюда, там целый плагин для jQuery
Ответить с цитированием
  #9 (permalink)  
Старый 25.01.2011, 23:28
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

может быть, ты и прав. Только лучше сделать как-нибудь так (второе демо). А именно: остановка при наведении мышки и возможность перейти на произвольный блок
Ответить с цитированием
  #10 (permalink)  
Старый 26.01.2011, 00:03
Профессор
Отправить личное сообщение для qwermjk Посмотреть профиль Найти все сообщения от qwermjk
 
Регистрация: 31.01.2010
Сообщений: 229

Ну остановку с помощью мыши нужно будет потом сделать =)
Вот что получилось труд двух дней http://nbatote.ru/test/
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery для загрузки страницы в <div> Dr.Holerik jQuery 12 11.10.2016 17:36
jQuery поменять CSS цвет для текста при наведении мышью (.text:hover) JooZ jQuery 16 15.11.2010 19:56
[вопросы] плагины для jquery для мультизагрузки файлов ffx jQuery 6 23.03.2010 14:17
Плагин jParallax для jQuery britanik jQuery 4 14.02.2010 12:11