从源自标签的onclick属性的自定义函数中调用preventdefault的访问事件
Access event to call preventdefault from custom function originating from onclick attribute of tag
我有这样的链接:
<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>
- 按原样运行,并注意到该链接在警报后没有重定向到Google。 然后,将传递给
onclick
处理程序的event
更改为e
之类的其他内容,单击run,然后注意到重定向确实发生在警报之后(结果窗格变为白色,显示重定向)。最简单的解决方法就是:
<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。
试试这个:
<script>
$("a").click(function(event) {
event.preventDefault();
});
</script>
你不能直接从a标签中删除href属性吗?
<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();
});
简单!
onclick="blabla(); return false"
您可以像这样从onclick访问事件:
<button onclick="yourFunc(event);">go</button>
和在你的javascript函数,我的建议是添加第一行语句:
function yourFunc(e) {
e = e ? e : event;
}
则在所有地方使用e作为事件变量
无需任何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');
}
e.preventDefault();从https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 如何在单击复选框后调用控制器方法
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 使用Google Visualization动态调用构造函数
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 调用函数内部的函数
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- Javascript/jQuery中的并行Ajax调用
- 同步调用,直到用户通过angular验证为访问者