访问事件以从源自tag的onclick属性的自定义函数调用preventdefault

时间:2011-12-23 09:44:02

标签: javascript jquery html

我有这样的链接:

<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中获取事件吗

11 个答案:

答案 0 :(得分:135)

我相信你可以将event传入函数内联,这将是W3C兼容浏览器中引发事件的event对象(即旧版本的IE仍然需要在事件内部进行检测)处理函数来查看window.event)。

<强> A quick example 即可。

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

  1. 按原样运行,并注意警告后该链接没有重定向到Google。
  2. 然后,将传递到event处理程序的onclick更改为e之类的其他内容,单击“运行”,然后注意重定向确实发生在警报之后(结果窗格显示为白色,展示重定向)。

答案 1 :(得分:98)

最简单的解决方案就是:

<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。

答案 2 :(得分:10)

试试这个:

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

答案 3 :(得分:7)

<script type="text/javascript">
$('a').click(function(){
   return false;
});
<script>

答案 4 :(得分:5)

为链接添加一个唯一的类,并使用一个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>

答案 5 :(得分:4)

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

答案 6 :(得分:4)

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

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

答案 7 :(得分:1)

您可以像这样从onclick访问事件:

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

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

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

然后将e用作事件变量

答案 8 :(得分:0)

e.preventDefault(); 来自https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault

或者从您的方法中返回false。

答案 9 :(得分:0)

没有任何JS库或jQuery。 如果可能的话,打开一个漂亮的弹出窗口。安全地无法正常打开链接。

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

辅助功能:

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');
}

答案 10 :(得分:-1)

简单!

onclick="blabla(); return false"