gpt4 book ai didi

jQuery:检测cmd+单击/control+单击

转载 作者:行者123 更新时间:2023-12-03 21:44:55 27 4
gpt4 key购买 nike

我在选项卡中有我的网络应用程序的选项。

<ul id="tabs">
<li><a href="a.php">aaa</a></li>
<li><a href="b.php">bbb</a></li>
<li><a href="c.php">ccc</a></li>
<li><a href="d.php">ddd</a></li>
<li><a href="e.php">eee</a></li>
</ul>

当用户单击任何选项卡(在同一窗口中)时,我会使用此代码获得淡出效果,然后自动重定向:

$('ul#tabs li a').click(function(e){
if(e.which == 1) {
var link = $(this).attr('href');
$('#content').fadeOut('fast',function(){
window.location = link;
});
}
});

它效果很好,因为它忽略了鼠标中键单击(在新选项卡中打开选项时,不应触发该效果)。问题是,如果我使用键盘+鼠标组合打开选项卡,而不是打开新选项卡,它会触发整个效果/重定向代码。

那么,我如何使用 jQuery 检测到这一点:

  • cmd + 鼠标左键单击 (Mac)
  • Ctrl + 鼠标左键单击 (Windows/Linux)

最佳答案

遗憾的是,当按住 ctrl 键并单击时,event.metaKey 在 Windows 上的计算结果不会为 true。

幸运的是,在这些情况下,event.ctrlKey 的计算结果确实为 true。另外,您可能需要考虑在事件处理程序中使用 Shift + 单击。

因此,您的跨平台 jquery 风格的 javascript 代码将类似于:

$('ul#tabs li a').on('click', function(e) {
var link = $(this).attr('href');

// Check "open in new window/tab" key modifiers
if (e.shiftKey || e.ctrlKey || e.metaKey) {
window.open(link, '_blank');
} else {
$('#content').fadeOut('fast',function(){
window.location = link;
});
}
}
});

关于jQuery:检测cmd+单击/control+单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251846/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com