Jquery event.preventDefault不使用shift单击

Jquery event.preventDefault不使用shift单击,jquery,click,anchor,preventdefault,Jquery,Click,Anchor,Preventdefault,我只是想让用户为某个动作移动单击锚定标记。问题在于,在浏览器中按住shift键单击URL会在新窗口中打开链接。因此,我自然会使用event.preventDefault(),但在这种情况下,它在任何浏览器中似乎都不起作用。任何帮助都将不胜感激 下面是一个JSFIDLE: 代码如下: <a href="#" class="edit">shift-click here</a> <script> $('.edit').click(function (e) {

我只是想让用户为某个动作移动单击锚定标记。问题在于,在浏览器中按住shift键单击URL会在新窗口中打开链接。因此,我自然会使用
event.preventDefault()
,但在这种情况下,它在任何浏览器中似乎都不起作用。任何帮助都将不胜感激

下面是一个JSFIDLE:

代码如下:

<a href="#" class="edit">shift-click here</a>

<script>

$('.edit').click(function (e) {
    if (e.shiftKey) {
        e.preventDefault();
        alert('you shift-clicked');
    }
});

<script>

$('.edit')。单击(函数(e){
如果(如换档键){
e、 预防默认值();
警报(“您按下了shift键”);
}
});

您没有包含jQuery,因此没有调用您的单击处理程序

HTML


这是根据您需要的工作jQuery代码

$('.edit').click(function(e) {
    if (e.shiftKey) {
        alert("shift+click");
        e.preventDefault();
    } 
});

$('.edit').click(function(e) {
    e.stopPropagation();
    e.preventDefault();
});

您没有在JSFIDLE中运行jQuery。一旦包括了这一点,您应该首先防止默认设置,然后检查shift键并运行必要的代码

您应该尽量避免StopperProgation,除非您确实打算停止DOM中冒泡的事件。但在这个例子中,这看起来不像你想要的

请看这里:

以及进一步阅读:

因为您删除了另一个问题:您的“完整代码”中没有阻止默认值的原因很简单:

脚本1006:应为“')”
_显示,第131行字符5

始终检查控制台是否有错误。它们是代码不起作用的首要原因


在本例中,您忘记了使用
关闭
click()
函数调用。

为什么要将其拆分为单独的事件?他说得对,jQuery没有包含在JSFIDLE中,因此单击永远不会绑定。谢谢。这确实很管用,所以你已经回答了我的问题。不幸的是,
stopDefault()
在我的代码的完整上下文中仍然不起作用,所以我将在另一个问题中发布它。再次感谢你让我更进一步。
$('.edit').click(function(e) {
    if (e.shiftKey) {
        alert("shift+click")
    } 
});
$('.edit').click(function(e) {
    if (e.shiftKey) {
        alert("shift+click");
        e.preventDefault();
    } 
});

$('.edit').click(function(e) {
    e.stopPropagation();
    e.preventDefault();
});
$('.edit').click(function (e) {
    e.preventDefault();
    if (e.shiftKey) {
        alert('you shift-clicked');
    }
});