Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.03.2017, 16:12
Профессор
Отправить личное сообщение для greenwar Посмотреть профиль Найти все сообщения от greenwar
 
Регистрация: 19.08.2010
Сообщений: 150

пауза при наведении - поясните пожалуйста
вот есть такая ф-я:
$(function()
{
    var MenuShowTimer;
    $('.wait05').hover(
    function(e)
    {
        MenuShowTimer = setTimeout(
        (function(Obj)
        {
            return function() {$(Obj).next().fadeIn();}; // то что должно происходить
        }) (this),1000)
    },
    // mouse leave сбрасывает таймер
    function(e)
    {
        clearTimeout(MenuShowTimer);
        $(this).next().fadeOut(); // то что должно происходить
    }
    );
});


а вопрос такой - почему эта часть:
$('.wait05').hover(
    function(e)
    {
        MenuShowTimer = setTimeout(
        (function(Obj)
        {
            return function() {$(Obj).next().fadeIn();}; // то что должно происходить
        }) (this),1000)


...не работает (пауза отсутствует) в таком виде:
$('.wait05').hover(
    function(e)
    {
        MenuShowTimer = setTimeout(
        (function(Obj)
        {
            return some_function(e);
        }) (this),1000)

или даже в таком:
$('.wait05').hover(
    function(e)
    {
        MenuShowTimer = setTimeout(
        (some_function(e)) (this),1000)

т.е. хотелось бы сократить и вынести во внешнюю ф-ю, но не выходит почему-то
работает только через
return function() {some_function(e);}

Последний раз редактировалось greenwar, 15.03.2017 в 16:15.
Ответить с цитированием
  #2 (permalink)  
Старый 16.03.2017, 08:51
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,133

Сообщение от greenwar Посмотреть сообщение
...не работает (пауза отсутствует) в таком виде:
$('.wait05').hover(
    function(e)
    {
        MenuShowTimer = setTimeout(
        (function(Obj)
        {
            return some_function(e);
        }) (this),1000)
Потому как функция
some_function(e)

выполняется сразу, кагбэ готовя другую функцию для setTimeout()...
Т.е. ты просто не понимаешь сам что написал.
Вот если бы
some_function(e)

возвращала бы функцию для setTimeout(), тогда бы та функция выполнилась после паузы...
Сообщение от greenwar Посмотреть сообщение
или даже в таком:
$('.wait05').hover(
    function(e)
    {
        MenuShowTimer = setTimeout(
        (some_function(e)) (this),1000)
Ну, а это вообще без комментариев...
Ответить с цитированием
  #3 (permalink)  
Старый 16.03.2017, 09:01
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,133

Сообщение от greenwar
хотелось бы сократить и вынести во внешнюю ф-ю
Вот тебе статейка на эту тему...
https://learn.javascript.ru/bind
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Показать div при наведении / jQuery updaite Элементы интерфейса 4 28.07.2014 03:45
Изменение текста при наведении xformer jQuery 2 11.07.2014 10:09
Подружить два скрипта (скроллер+скрипт эффекта при наведении) Che jQuery 26 29.08.2012 10:59
Менять цвет фона select option при наведении Dmitriykh Элементы интерфейса 3 25.07.2011 13:04
изменения рисунка при наведении курсора Kenan Bek Events/DOM/Window 24 19.12.2010 20:48