|
|
|
| Добрый день.
А есть ли возможность узнать время длительности события? Например при наведении курсора на объект?
Суть в том, чтобы сделать так: при наведении курсора происходит одно событие, а если задержать курсор на этом же объекте на несколько секунд, то будет происходить другое действие. | |
|
|
|
|
|
|
|
для: Aidaho
(11.05.2012 в 12:55)
| | Как-то так:
var tOut;
$('.any').hover(function() {
var that = $(this);
tOut = setTimeout( function() { that.addClass('hover'); }, 3000 );
}, function() {
clearTimeout(tOut);
$(this).removeClass('hover');
})
|
| |
|
|
|
|
|
|
|
для: bishake
(11.05.2012 в 13:11)
| | Как-то не правильно она работает.
Функция запускается при любом наведении на объект и при этом не перестает работать.
У меня так:
var hovers = {};
var hovers1 = {};
jQuery(document).ready(function(){
jQuery('#logo').hover(
function() {
var t = new Date();
jQuery(this).data('hover', t);
hovers = setTimeout(function() {
for(var i = 0; i <= logoLength; i++) {
hovers1 = setTimeout(function() {
changeLogo(i);
}, 1000 );
}
}, 3000 );
},
function() {
var t = jQuery(this).data('hover');
clearTimeout(hovers[t]);
clearTimeout(hovers1[t]);
delete hovers[t];
delete hovers1[t];
jQuery(this).data('hover', '');
});
});
|
| |
|
|
|
|
|
|
|
для: Aidaho
(11.05.2012 в 14:21)
| | Пардон, я тот первый вариант исправил. Посмотрите, как сейчас в моём ответе написано. | |
|
|
|
|
|
|
|
для: bishake
(11.05.2012 в 14:29)
| | Я тоже не мог зачем даты были нужны. А зачем они были нужны? ))
И можно еще 1 вопросик? Уже более глупый. Как сделать вывод по очереди лого? По типу, как у меня в функции... | |
|
|
|
|
|
|
|
для: Aidaho
(11.05.2012 в 14:35)
| | > Я тоже не мог зачем даты были нужны. А зачем они были нужны? ))
Даты предполагались в качестве уникальных идентификаторов таймаутов. Этот вариант помог бы, если бы таймаутов было бы несколько... Но я позже сообразил, что для Вашего случая нужен только один таймаут, и исправил :)
> Как сделать вывод по очереди лого?
Вероятно так:
//<?
var tOut;
var logo = 1;
$('#logo').hover(function() {
var that = $(this);
tOut = setTimeout( function() { changeLogo( logo ); logo = logo%logoLength+1; }, 3000 );
}, function() {
clearTimeout(tOut);
})
|
| |
|
|
|
|
|
|
|
для: bishake
(11.05.2012 в 14:49)
| | >Вероятно так:
так убегает в undefine.
Я хочу что бы лого менялись с задержкой в 1 секунду при наведенном курсоре. Как сделал я они просто прокручиваются до последнего и все, хотя и стоит задержка в 1 секунду.
Что бы было понятно функция ченджЛого:
var i;
function changeLogo(i) {
i++;
if(i <= logoLength) {
jQuery('#logo').attr('src', path+logo[i]);
jQuery('#logo').attr('onMouseOver', 'changeLogo(' + i + ')');
} else {
i = 0;
jQuery('#logo').attr('src', path+logo[0]);
jQuery('#logo').attr('onMouseOver', 'changeLogo(' + i + ')');
}
}
|
Ну а пытаюсь сделать так:
jQuery('#logo').hover(
function() {
hovers = setTimeout(function() {
for(var j = i; j <= logoLength; j++) {
hovers1 = setTimeout(function() {
changeLogo(j);
}, 1000 );
}
}, 3000 );
},
|
Если в цикле j = i, то в ответ тишина, а если j = 0, то до последнего прокручивается не показывая предыдущие лого и встает в последнее с задержкой | |
|
|
|
|
|
|
|
для: Aidaho
(11.05.2012 в 14:56)
| | Не, перемудрили Вы. Ненужны никакие onMouseOver'ы и changeLogo().
Всё можно проще сделать:
//<?
var tOut, tInt;
var curr = 0;
var logoLength = 10;
jQuery('#logo').hover(function() {
tOut = setTimeout( function() {
tInt = setInterval( function() {
jQuery('#logo').attr('src', path+logo[curr]);
curr = (curr+1)%logoLength;
}, 1000);
}, 3000 );
}, function() {
clearTimeout(tOut);
clearInterval(tInt);
})
|
| |
|
|
|
|
|
|
|
для: bishake
(11.05.2012 в 15:18)
| | >Не, перемудрили Вы. Ненужны никакие onMouseOver'ы и changeLogo().
Да, можно запихать все в одну функцию. )
Но сейчас дело не в этом, а в том, что не прокручиваются лого при задержки курсора на нем. Если сделать как Вы предложили, то получается, что при наведении меняется, при задержки прокручивается еще раз. Цикла ж нет, а с циклом идет сразу до упора не показывая все... ( | |
|
|
|
|
|
|
|
для: Aidaho
(11.05.2012 в 15:40)
| | Вы не правы. Скопируйте мой код и запустите. Не используйте циклы и любые другие функции, только объявите свои переменные (path, logoLength, logo...). Обратите внимание, что там используется как setTimeout, так и setInterval. | |
|
|
|
|
|
|
|
для: bishake
(11.05.2012 в 15:48)
| | >так и setInterval.
setInterval..... БЛииииииин!!! совсем о нем забыл (((((
фак! фак! лишний час промучился... ((
Спасибо большое! ) | |
|
|
|