为什么dblclick事件像click事件一样工作?

时间:2011-08-11 10:36:20

标签: javascript jquery

$('#ajax-links a').live('click', function(e) {
    var url = $(this).attr('href');
    url = url.replace(/^.*#/, '');
    $.history.load(url);
    return false;
});

每当我用'dblclick'替换'click'时,它仍然表现为click事件。该演示在这里(http://www.serpere.info/jquery-history-plugin/samples/ajax/),可以从这里下载源代码:https://github.com/tkyk/jquery-history-plugin/tree/master/samples/

1 个答案:

答案 0 :(得分:2)

在添加dblclick时尝试阻止单击默认:

您可以阻止事件的默认操作,而不是return false;

如果您不希望事件冒泡抛出DOM,则可以使用event.stopPropagation()函数

$('#ajax-links a').live('click', function(event) {
    event.preventDefault();
});
$('#ajax-links a').live('dblclick', function(event) {
    event.preventDefault();
    var url = $(this).attr('href');
    url = url.replace(/^.*#/, '');
    $.history.load(url);
});

Dblclick事件只会在dblclick上被触发:请参阅:jsfiddle.net/cR5ZS

您认为单次点击触发的原因可能是您的链接指的是:#/some_page/,而您的dblclick事件处理程序几乎相同。使用/some_page/插件保存$.history,根据我的经验,$ .history插件的功能几乎相同:将调用的url解析为并将其放入哈希:url = /some_page/ #/some_page/

安德烈亚斯