Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.03.2020, 02:56
Аспирант
Отправить личное сообщение для ethereal Посмотреть профиль Найти все сообщения от ethereal
 
Регистрация: 06.05.2019
Сообщений: 94

Как поставить таймер на hover?
Здравствуйте! Подскажите, подcкажите как сделать на JS при наведение на блок, hover срабатывал только если курсор находится над ним больше секунды?

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 12.03.2020, 07:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

ethereal,
transition-delay
Ответить с цитированием
  #3 (permalink)  
Старый 12.03.2020, 16:49
Аспирант
Отправить личное сообщение для ethereal Посмотреть профиль Найти все сообщения от ethereal
 
Регистрация: 06.05.2019
Сообщений: 94

Да нет. Нужно на JS по такому примеру
$( "td" ).hover(
  function() {
    $( this ).addClass( "hover" );
  }, function() {
    $( this ).removeClass( "hover" );
  }
);


Функция addClass должна сработать если курсор находится над блоком больше секунды.
Ответить с цитированием
  #4 (permalink)  
Старый 12.03.2020, 17:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

ethereal,
что не так?
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  td:hover{
      transition: .5s 1s;
      background-color: #FF0000;
  }

  </style>

</head>
<body>
<table width="400" summary="" >
	<thead>
		<tr>
			<th>Title 1</th>
			<th>Title 2</th>
			<th>Title 3</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>Cell 1.1</td>
			<td>Cell 1.2</td>
			<td>Cell 1.3</td>
		</tr>
		<tr>
			<td>Cell 2.1</td>
			<td>Cell 2.2</td>
			<td>Cell 2.3</td>
		</tr>
	</tbody>
</table>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 12.03.2020, 19:50
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,706

Сообщение от ethereal Посмотреть сообщение
Функция addClass должна сработать если курсор находится над блоком больше секунды.
Ставь timeout
Как то так

let timer = 0;
$( "td" ).hover(
  function() {
    timer = setTimout (() => {
      clearTimeout(timer);
      timer = 0;
      $( this ).addClass( "hover" );
    }, 1000)
  }, function() {
    if (timer) clearTimeout(timer);
    timer = 0;
    $( this ).removeClass( "hover" );
  }
);
Ответить с цитированием
  #6 (permalink)  
Старый 12.03.2020, 20:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Сообщение от voraa
setTimout
как-то так ...
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .hover{
      background-color: #FF0000;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
let timer;
$( "td" ).hover(
  function() {
    clearTimeout(timer);
    timer = setTimeout (() => {
      $( this ).addClass( "hover" );
    }, 1000)
  }, function() {
    clearTimeout(timer);
    $( this ).removeClass( "hover" );
  }
);

});
  </script>
</head>
<body>
<table width="400" summary="" >
	<thead>
		<tr>
			<th>Title 1</th>
			<th>Title 2</th>
			<th>Title 3</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>Cell 1.1</td>
			<td>Cell 1.2</td>
			<td>Cell 1.3</td>
		</tr>
		<tr>
			<td>Cell 2.1</td>
			<td>Cell 2.2</td>
			<td>Cell 2.3</td>
		</tr>
	</tbody>
</table>
</body>
</html>

или так ...
<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    .hover{
            background-color: #FF0000;
    }

    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

    <script>
$(function() {
$( "td" ).on("mouseleave  mouseenter",
    function(event) {
        clearTimeout(this.timer);
        if(event.type === "mouseenter")
        this.timer = setTimeout (() => {
            $( this ).addClass( "hover" );
        }, 1000);
        else $( this ).removeClass( "hover" );
    }
);

});
    </script>
</head>
<body>
<table width="400" summary="" >
    <thead>
        <tr>
            <th>Title 1</th>
            <th>Title 2</th>
            <th>Title 3</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Cell 1.1</td>
            <td>Cell 1.2</td>
            <td>Cell 1.3</td>
        </tr>
        <tr>
            <td>Cell 2.1</td>
            <td>Cell 2.2</td>
            <td>Cell 2.3</td>
        </tr>
    </tbody>
</table>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 13.03.2020, 00:25
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от ethereal
Да нет. Нужно на JS по такому примеру
Не нужно, вам стоит всего-то переименовать селектор td.hover в td:hover и добавить всего одно объявление transition-delay. (чтобы сработало только тогда, когда, как вы пишете «только если курсор находится над ним больше секунды»)

td:hover {
	/* указывает, что стили применяются через 1 сек. */
	transition-delay: 1s;
	
	/* здесь идут стили, которые были определены в td.hover */
	background: red;
}


Вам не нужно самостоятельно добавлять класс hover, так как псевдо-класс hover автоматически добавляется на любой элемент при взаимодействии с мышью или касании сенсорного экрана!

Используйте псевдо-классы себе на пользу, а не боритесь с ними! (Итого — хорошо читаемый и понятный код)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поставить задершку между событием ethereal Элементы интерфейса 0 08.06.2019 11:48
Как поставить галочку? Buser Элементы интерфейса 6 26.07.2018 12:26
Как поставить на паузу setTimeout если hover stomaks Элементы интерфейса 1 26.04.2016 09:46
Div внутри Div. Как сделать hover только для самого верхнего? Siend Общие вопросы Javascript 2 19.03.2015 22:16
Изменение img src при hover на другом img -- как? adelante jQuery 2 14.04.2010 08:12