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

この問題を回避する方法は、クリック イベントのタイムアウトを使用して、ユーザーがダブルクリックする時間を与えることです。
ユーザーが特定の時間枠内で 2 回クリックした場合、それはダブルクリックであり、ユーザーが 1 回だけクリックした場合、それは通常のクリックです。

$('#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 に答える