我正在加载AJAX中的每个页面,因此我在链接上使用return false将其加载到ajax中。

问题:如果这些家伙想在新窗口中打开他无法打开的控件,则ctrl + click也会激活ajax,我没有尝试过中间按钮,因为我没有鼠标。

然后,我尝试了e.preventDefault,它仍然阻止花花公子在另一个标签中打开它。

知道我该如何规避吗?

(如果您想尝试:www.p1x3L.com)

最佳答案

e.preventDefault()将完全阻止浏览器跟踪链接。

我想做的只是在单击发生时检查Ctrl(在Mac上为cmd)的状态,然后处理该操作。

您需要跟踪按键的动作。考虑以下示例,该示例为ctrlPressed分配布尔值:

var ctrlPressed = false;

$(window).on('keydown', function(e) {
    if (e.metaKey || e.ctrlKey)  ctrlPressed = true;
}).on('keyup', function(e) {
    if (e.metaKey || e.ctrlKey)  ctrlPressed = false;
});


现在,在您的click处理程序中,您可以检查ctrlPressed的状态:

$('a').on('click', function(e) {
    if(ctrlPressed)
    {
        return true;
    }

    // Handle your AJAX here. No need for an else{} block
    // since return true will already have executed.
});

09-25 18:11