【问题标题】:How to get the time difference between double clicks using jquery?如何使用jquery获取双击之间的时间差?
【发布时间】:2016-02-08 11:08:26
【问题描述】:

我想获得两次单击单个按钮之间的时间差。 我有这样的标记

<a href="#">click here</a>

我正在使用此代码来获取两次点击之间的时间差。

var clickedTime = '';
var lastClicked = '';
$('body').on('click', 'a', function(e) {
    var d = new Date();
    clickedTime = lastClicked;
    lastClicked = d.getTime();
    console.log(clickedTime);
    console.log(lastClicked);
});

但它在两个控制台中同时显示。那么有人可以告诉我如何获得时差吗?

【问题讨论】:

  • 这个脚本对我来说似乎是正确的,它在我的控制台上显示不同的时间(在 chrome 中),唯一的区别是最后一次点击变量大于点击变量
  • 似乎无法重现您的错误。你能得到一个 jsfiddle 什么的吗。

标签: javascript jquery html click double-click


【解决方案1】:

您可以使用Date.prototype.getTime() 来获取点击事件的时间。

var click = 0;
var time;
var difference;
$("a").click(function(){
    var date = new Date();
    click += 1;
    if (click == 2) {
        difference = date.getTime() - time;
        click = 0;
        console.log(difference);
    }
    else
        time = date.getTime();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<a>Please double click on me!</a>

或者使用事件的Event.timeStamp属性。

var click = 0;
var time;
var difference;
$("a").click(function(e){
    click += 1;
    if (click == 2) {
        difference = e.timeStamp - time;
        click = 0;
        console.log(difference);
    }
    else
        time = e.timeStamp;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<a>Please double click on me!</a>

请注意,代码以毫秒为单位返回差异时间。

【讨论】:

    【解决方案2】:

    这是一个简单的jQuery 函数,用于以所需格式返回每次x 点击的时间差 - Demo

    <button>Get Time Difference</button>
    
    (function ($) {
     $.fn.clickTimer = function ($param, $numbClicks) {
        function msTotime(ms) {
            var mill = ms % 1000;
            var seconds = Math.floor((ms / 1000) % 60);
            var minutes = Math.floor((ms / (60 * 1000)) % 60);
            switch ($param) {
                case "ms":
                    return ms;
                    break;
                case "s":
                    return seconds;
                    break;
                default:
                    return [minutes, seconds, mill];
            }
        }
        var counter = 0;
        var Start_Time;
        this.click(function (event) {
            counter++;
            if (counter == $numbClicks) {
                counter = 0;
                var now = event.timeStamp;
                Diff = now - Start_Time;
                console.log(msTotime(Diff));
            } else {
                Start_Time = event.timeStamp;
            }
        });
        return this;
     };
    })(jQuery);
    

    用法:

    $(selector).clickTimer(time format , number of clicks);
    
     $("button").clickTimer("ms", 2);
     // returns time difference in milliseconds for every 2 clicks
    
     $("button").clickTimer("s", 2);
     // returns time difference in seconds
    
     $("button").clickTimer(false, 2);
     // returns an array [minutes, seconds, milliseconds]
    

    让我知道你的想法。这绝对不是一个完美的解决方案,但它可以帮助您入门。

    【讨论】:

      猜你喜欢
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多