1

我只是想让用户点击某个动作的锚标签。问题是浏览器中的 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>
4

4 回答 4

2

您没有在 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

于 2013-02-18T23:20:12.393 回答
0

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

HTML

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

JS

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

http://jsfiddle.net/fJHug/

于 2013-02-18T22:53:53.173 回答
0

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

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

$('.edit').click(function(e) {
    e.stopPropagation();
    e.preventDefault();
});
于 2013-02-18T22:54:59.087 回答
0

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

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

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

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

于 2013-02-19T00:07:22.677 回答