23

1ページにたくさんの画像があり、次を使用してイベントをトリガーしています:

$('.img').on('mouseover', function() {
 //do something

});

ユーザーがおそらく1秒間ホバーすると、「//何かをする」か、実際に「マウスオーバー」イベントをトリガーするように遅延を追加する方法はありますか?

4

5 に答える 5

47

使用できますsetTimeout

var delay=1000, setTimeoutConst;
$('.img').on('hover', function() {
  setTimeoutConst = setTimeout(function() {
    // do something
  }, delay);
}, function() {
  clearTimeout(setTimeoutConst);
});
于 2013-03-22T17:03:09.943 に答える
32

ユーザーがあまりにも早く去った場合、 asetTimeoutとともに aを使用してそれを行うことができます。clearTimeout

var timer;
var delay = 1000;

$('#element').hover(function() {
    // on mouse in, start a timeout

    timer = setTimeout(function() {
        // do your stuff here
    }, delay);
}, function() {
    // on mouse out, cancel the timer
    clearTimeout(timer);
});
于 2013-03-22T17:04:26.243 に答える
8

タイマーを使用し、1000 ミリ秒以内にマウスを離したときにタイマーをクリアします

var timer;

$('.img').on({
    'mouseover': function () {
        timer = setTimeout(function () {
            // do stuff
        }, 1000);
    },
    'mouseout' : function () {
        clearTimeout(timer);
    }
});
于 2013-03-22T17:04:20.033 に答える
4

私もこのようなものを探していましたが、二次的な遅れもありました。ここで答えの1つを取り、それを拡張しました

この例では、マウスオーバーの X 秒後に div を表示し、マウスアウトの X 秒後に非表示にします。ただし、表示されている div にカーソルを合わせると無効になります。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<style type="text/css">
.foo{
  position:absolute; display:none; padding:30px;
  border:1px solid black; background-color:white;
}
</style>
<h3 class="hello">
  <a href="#">Hello, hover over me
    <span class="foo">foo text</span>
  </a>
</h3>


<script type="text/javascript">
var delay = 1500, setTimeoutConst, 
    delay2 = 500, setTimeoutConst2;
$(".hello").mouseover(function(){
  setTimeoutConst = setTimeout(function(){
    $('.foo').show();
  },delay);
}).mouseout(function(){
  clearTimeout(setTimeoutConst );
  setTimeoutConst2 = setTimeout(function(){
    var isHover = $('.hello').is(":hover");
    if(isHover !== true){
      $('.foo').hide();
    }
  },delay2);
});
</script>

実施例

于 2014-09-10T22:08:56.433 に答える