Javascript.RU

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

Как добавить задержку?
$( ".uk-menu-home" ).hover(
  function() {
    $( this ).addClass('uk-open');
  },  
  function() {
    $( this ).removeClass('uk-open');
  }
);
Суть скрипта проста, при наведении на элемент добавляется класс. А как сделать так, что бы существовала задержка перед удаление класса, после того как мы уберем курсор от элемента?
Ответить с цитированием
  #2 (permalink)  
Старый 29.10.2013, 12:23
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

$( ".uk-menu-home" ).hover(
  function() {
    $( this ).addClass('uk-open');
  },  
  function() {
    setTimeout(function () {
        $( this ).removeClass('uk-open');
    }, 1000);
  }
);

только по-хорошему надо ещё добавлять переменную-флаг, на случай многократного быстрого наведения/уведения курсора ссылок.
Ответить с цитированием
  #3 (permalink)  
Старый 29.10.2013, 12:44
Новичок на форуме
Отправить личное сообщение для SnakeAce Посмотреть профиль Найти все сообщения от SnakeAce
 
Регистрация: 30.01.2013
Сообщений: 9

Сообщение от keen Посмотреть сообщение
$( ".uk-menu-home" ).hover(
  function() {
    $( this ).addClass('uk-open');
  },  
  function() {
    setTimeout(function () {
        $( this ).removeClass('uk-open');
    }, 1000);
  }
);

только по-хорошему надо ещё добавлять переменную-флаг, на случай многократного быстрого наведения/уведения курсора ссылок.
В данном случает, класс вообще не удаляется
Ответить с цитированием
  #4 (permalink)  
Старый 29.10.2013, 12:46
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

блин. ну перенеси контекст))
$( ".uk-menu-home" ).hover(
  function() {
    $( this ).addClass('uk-open');
  },  
  function() {
    var that = this;
    setTimeout(function () {
        $( that ).removeClass('uk-open');
    }, 1000);
  }
);
Ответить с цитированием
  #5 (permalink)  
Старый 29.10.2013, 12:50
Новичок на форуме
Отправить личное сообщение для SnakeAce Посмотреть профиль Найти все сообщения от SnakeAce
 
Регистрация: 30.01.2013
Сообщений: 9

Спасибо, а можно с флагами поподробней?
Ответить с цитированием
  #6 (permalink)  
Старый 29.10.2013, 12:54
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

поводи быстро мышкой по ссылкам туда-сюда и посмотри что происходит.
сделай выводы, продумай алгоритм как сделать так, чтобы было нормально, а не как сейчас.
останется самое простое - написать несколько строк кода.
Ответить с цитированием
  #7 (permalink)  
Старый 29.10.2013, 13:18
Новичок на форуме
Отправить личное сообщение для SnakeAce Посмотреть профиль Найти все сообщения от SnakeAce
 
Регистрация: 30.01.2013
Сообщений: 9

Так, вот у нас есть несколько элементов для проверки.
$( ".uk-menu-home" ).hover(
  function() {
    $( this ).addClass('uk-open').clearTimeout;
  },  
  function() {
    var that = this;
    setTimeout(function () {
        $( that ).removeClass('uk-open');
    }, 1000);
  }
);
     $( ".uk-menu-forum" ).hover(
  function() {
    $( this ).addClass('uk-open').clearTimeout;
  },  
  function() {
    var that = this;
    setTimeout(function () {
        $( that ).removeClass('uk-open');
    }, 1000);
  }
);
     $( ".uk-menu-load" ).hover(
  function() {
    $( this ).addClass('uk-open').clearTimeout;
  },  
  function() {
    var that = this;
    setTimeout(function () {
        $( that ).removeClass('uk-open');
    }, 1000);
  }
);
Т.е нужно задать условие или то, или то?
Получается что-то типо этого
$( ".uk-menu-home").hover(
  function() {
    $( this ).addClass('uk-open').clearTimeout;
  },  
  function() {
    var that = this;
      if($('.uk-menu-forum'||'.uk-menu-load').is(':hover') === true){$( that ).removeClass('uk-open')
    } else {setTimeout(function () {
        $( that ).removeClass('uk-open');
    }, 1000);};
  }
);

Последний раз редактировалось SnakeAce, 29.10.2013 в 16:10.
Ответить с цитированием
  #8 (permalink)  
Старый 29.10.2013, 19:56
Новичок на форуме
Отправить личное сообщение для SnakeAce Посмотреть профиль Найти все сообщения от SnakeAce
 
Регистрация: 30.01.2013
Сообщений: 9

Ап. Прошу помочь с данным скриптом. Как его доработать, и возможно сократить?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать задержку mxs89 Общие вопросы Javascript 3 04.06.2013 14:22
Как правильно добавить в javascript несколько стилей css? trixter5 Javascript под браузер 3 04.04.2013 23:20
Как добавить атрибут к ссылке hell100 Общие вопросы Javascript 2 20.06.2012 16:51
Как установить задержку внутри цикла for - ? caca0 Javascript под браузер 2 29.05.2012 15:12
Как правильно добавить форму используя jQuery Casufi jQuery 1 15.02.2010 23:14