在标签内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属性?