3

我正在尝试在窗口中设置一些文本single and double click in jquery

但我面对的是ambiguityfor double click

尝试做时double click,第一个single click功能起作用,然后double click起作用。

类似的问题在这里检查,它已经很老了。它也有一些问题。

使用最新 jquery 版本的任何新答案。

在此处查看我的问题 现场演示的现场演示

这是我的代码,

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>

<a id="press" href="http://jquery.com">Click here</a>
<div id="log"></div>

<script>

$("#press").click(function(event) {
  event.preventDefault();
  $("#log").text("I am single click !");
return false;
});

$("#press").dblclick(function(event) {
      event.preventDefault();
      $('#log').text("I am double  click !");
      return false;
    });
</script>

</body>
</html>

希望我们的堆栈用户能帮助我。

4

2 回答 2

4

解决该问题的方法是使用单击事件的超时来给用户双击的时间。
如果用户在一定时间内点击了两次,则为双击,如果用户仅点击一次,则为正常点击:

$('#press').click(function (event) {
    event.preventDefault();

    if ( $(this).data('dblclicked') ) {
        $('#log').text('No google today!');
        clearTimeout( $(this).data('clicked') );
        $(this).data('dblclicked', false);
    }else{
        var self = this;
        $(this).data('dblclicked', true).data('clicked', setTimeout(function() {
            $('#log').text('google !');
            $(self).data('dblclicked', false);
        },300));
    }
});

小提琴

于 2013-07-29T10:38:21.040 回答
0

我得到了最接近的解决方案

<a id="press" href="javascript:void(0)" onclick="singleClick(event)"
    ondblclick="doubleClick(event)">Click here</a>

<div id="log"></div>

我的JavaScript将是,

var timer;
var status = 1;

function singleClick(event) {

    event.preventDefault();
    status = 1;
    timer = setTimeout(function() {
        if (status == 1) {
            alert("I am single click !");
            document.getElementById("log").innerHTML ='I  am single click !';
        }
    }, 500);

}

function doubleClick(event) {

    event.preventDefault();
    clearTimeout(timer);
    status = 0;
    alert("I am double click !");
    document.getElementById("log").innerHTML = 'I  am a double  click!';
}
于 2013-10-15T06:57:41.407 回答