访问事件从源自标记的 onclick 属性的自定义函数中调用 proventdefault

我有这样的链接:

<a href="#" onclick="myfunc({a:1, b:'hi'})" />click</a>
<a href="#" onclick="myfunc({a:3, b:'jo'})" />click</a>

我想做一个 preventDefault()内的 myfunc(),因为一个 #将被添加到地址栏时,点击链接 (不做 return false;href='javascript:void(0);')

这可能吗? 我可以得到 myfunc()内部的事件

276556 次浏览

你能不能直接从标签中删除 href 属性?

试试这个:

<script>
$("a").click(function(event) {
event.preventDefault();
});
</script>

我相信你可以把 event传递给函数 inline,它将是 W3C 兼容浏览器中引发事件的 event对象(也就是说,旧版本的 IE 仍然需要在你的事件处理函数中检测 window.event)。

一个快速示例

function sayHi(e) {
e.preventDefault();
alert("hi");
}
<a href="http://google.co.uk" onclick="sayHi(event);">Click to say Hi</a>

  1. Run it as is and notice that the link does no redirect to Google after the alert.
  2. Then, change the event passed into the onclick handler to something else like e, click run, then notice that the redirection does take place after the alert (the result pane goes white, demonstrating a redirect).
<script type="text/javascript">
$('a').click(function(){
return false;
});
<script>

为链接添加一个唯一的类,并添加一个 javascript,以防止默认的链接:

<a href="#" class="prevent-default"
onclick="$('.comment .hidden').toggle();">Show comments</a>


<script>
$(document).ready(function(){


$("a.prevent-default").click(function(event) {
event.preventDefault();
});
});
</script>

我认为当我们使用 onClick 时,我们希望做一些与默认不同的事情。因此,对于所有你与 onClick 的链接:

$("a[onClick]").on("click", function(e) {
return e.preventDefault();
});

最简单的解决办法就是:

<a href="#" onclick="event.preventDefault(); myfunc({a:1, b:'hi'});" />click</a>

对于没有启用 JS 的浏览器(没有 JS 就没有缓存崩溃)的文档,这实际上是一种很好的缓存崩溃方法

<a onclick="
if(event.preventDefault) event.preventDefault(); else event.returnValue = false;
window.location = 'http://www.domain.com/docs/thingy.pdf?cachebuster=' +
Math.round(new Date().getTime() / 1000);"
href="http://www.domain.com/docs/thingy.pdf">

如果启用了 JavaScript,它将使用一个缓存破坏查询字符串打开 PDF,如果不启用,它将只打开 PDF。

很简单!

onclick="blabla(); return false"

你可以像下面这样通过 onclick 访问事件:

<button onclick="yourFunc(event);">go</button>

在 javascript 函数中,我的建议是添加第一行语句:

function yourFunc(e) {
e = e ? e : event;
}

然后使用无处不在的 e 作为事件变量

防止违约() ; 来自 href = “ https://developer.mozilla.org/en-US/docs/Web/API/event.preentDefault”rel = “ nofollow norefrer”> https://developer.mozilla.org/en-us/docs/web/api/event.preventdefault

或者从您的方法返回 false。

没有任何 JS 库或 jQuery。 如果可能,打开一个很好的弹出窗口。安全失败,正常链接打开。

<a href="https://acme.com/" onclick="onclick="openNewWindow(event, this.href);">...</a>

以及 helper 函数:

function openNewWindow(event, location) {
if (event.preventDefault && event.stopImmediatePropagation) {
event.preventDefault();
event.stopImmediatePropagation();
} else {
event.returnValue = false;
}
window.open(location, 'targetWindow', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=800,height=450');
}