双击Jquery中的歧义?

时间:2013-07-29 10:23:29

标签: javascript jquery event-handling click double-click

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

但我面对ambiguity的{​​{1}}。

尝试执行double click时,首先double click功能有效,然后single click有效。

类似的问题在这里check here并且它已经很老了。它也有一些问题。

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

在此处查看我的问题的实时演示 live demo

这是我的代码,

double click

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

2 个答案:

答案 0 :(得分:4)

解决问题的方法是使用click事件的超时来给用户双击的时间 如果用户在特定时间范围内点击两次,则为双击,如果用户只点击一次,则为正常点击:

$('#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));
    }
});

FIDDLE

答案 1 :(得分: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!';
}