在标签内onclick属性中的preventDefault

我有这样的链接:

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

我想在myfunc中做一个preventDefault() ,因为点击链接时,地址栏中会添加一个# (不做return false;或者href='javascript:void(0);'

这可能吗 ? 我可以在myfunc中获取事件吗?

我相信你可以将event传递给内联函数,这将成为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> 

最简单的解决scheme是:

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

这实际上是一个很好的方法,为没有JS支持的浏览器(如果没有JS没有caching破坏)

 <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,它将打开带有caching查询string的PDF,如果没有,只是打开PDF。

尝试这个:

 <script> $("a").click(function(event) { event.preventDefault(); }); </script> 
 <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(); }); 

你不能只是从标签中删除href属性?