【问题标题】:Jquery event.preventDefault not working with shift-clickJquery event.preventDefault 不适用于 shift-click
【发布时间】:2013-02-18 22:47:51
【问题描述】:

我只是希望用户移动单击锚标记以执行特定操作。问题是浏览器中的 shift-clicking URL 会在新窗口中打开链接。所以,我自然会使用event.preventDefault(),但在这种情况下,它似乎在任何浏览器中都不起作用。任何帮助将不胜感激!

这是一个 jsfiddle:

http://jsfiddle.net/zZea9/

这里是代码:

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

<script>

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

<script>

【问题讨论】:

    标签: jquery click anchor preventdefault


    【解决方案1】:

    您没有在 jsfiddle 中运行 jQuery。一旦包含了这个,你应该首先阻止默认,然后检查 shift 键并运行必要的代码。

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

    看这里: http://jsfiddle.net/zZea9/3/

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

    并进一步阅读 preventDefault: event.preventDefault() vs. return false

    【讨论】:

    • 谢谢。这确实在小提琴中起作用,所以你已经回答了我的问题。不幸的是,stopDefault() 仍然无法在我的代码的完整上下文中工作,所以我将在另一个问题中发布它。再次感谢您让我更进一步。
    【解决方案2】:

    你没有包含 jQuery,所以你的点击处理程序没有被调用。

    HTML

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

    JS

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

    http://jsfiddle.net/fJHug/

    【讨论】:

    • 严厉的反对,他是正确的,jQuery 没有被包含在 jsfiddle 中,因此点击永远不会被绑定。
    【解决方案3】:

    这里是你想要的工作 jQuery 代码。

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

    【讨论】:

    • 你为什么把它分成不同的事件?
    【解决方案4】:

    由于您删除了其他问题:“完整代码”中未阻止默认设置的原因很简单:

    SCRIPT1006:预期为 ')'
    _display,第 131 行字符 5

    始终检查您的控制台是否有错误。它们是代码无法运行的第一大原因。

    在这种情况下,您忘记使用 ) 关闭您的 click() 函数调用。

    【讨论】:

      猜你喜欢
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      相关资源
      最近更新 更多