我目前<a>
在jQuery中使用标签来启动诸如点击事件之类的事情。
例子是 <a href="#" class="someclass">Text</a>
但是我讨厌'#'如何使页面跳到页面顶部。我该怎么办?
我目前<a>
在jQuery中使用标签来启动诸如点击事件之类的事情。
例子是 <a href="#" class="someclass">Text</a>
但是我讨厌'#'如何使页面跳到页面顶部。我该怎么办?
Answers:
在jQuery中,当您处理click事件时, 返回false可阻止链接以通常的方式响应防止发生默认操作,即访问href
属性(根据PoweRoy的评论和Erik的回答):
$('a.someclass').click(function(e)
{
// Special stuff to do when this link is clicked...
// Cancel the default action
e.preventDefault();
});
$('a[href=#]').click(function(e) { e.preventDefault(); });
所以这很古老,但是...以防万一有人在搜索中找到它。
只需使用"#/"
代替,"#"
页面就不会跳转。
/
,而不是因为#/
没有任何意义。你可以做同样的事情#whateveryouwant
,它会阻止跳转到顶部
#/
或链接后的操作,例如#whatever
。
您甚至可以这样写:
<a href="javascript:void(0);"></a>
林不知道它是一个更好的方法,但它是一种方法:)
href='javascript:;'
不错,但是要小心,它会触发IE中的window.beforeUnload事件
<a href="#!" class="someclass">Text</a>
javascript
)<a href="javascript:void(0);" class="someclass">Text</a>
jQuery
)<a href="#" class="someclass">Text</a>
<script>
$('a.someclass').click(function(e) {
e.preventDefault();
});
</script>
您可以使用它event.preventDefault()
来避免这种情况。在此处阅读更多信息:http : //api.jquery.com/event.preventDefault/。
如果您想使用锚点,则可以使用http://api.jquery.com/event.preventDefault/,如建议的其他答案一样。
您还可以使用任何其他元素(例如跨度),并将click事件附加到该元素。
$("span.clickable").click(function(){
alert('Yeah I was clicked');
});
$('a[href="#"]').click(function(e) {e.preventDefault(); });
您可以只传递没有href属性的锚标记,然后使用jQuery进行所需的操作:
<a class="foo">bar</a>
#
,我认为这对您来说不是问题,因此提供了此解决方案,因为它可能是满足您需求的最简单方法。
a:link
CSS选择器将不会定位到该锚标记。
我用过了:
<a href="javascript://nop/" class="someClass">Text</a>
该#/
技巧有效,但是将历史事件添加到浏览器。因此,单击后退不起作用,因为用户可能希望/期望这样做。
$('body').click('a[href="#"]', function(e) {e.preventDefault() });
是我采用的方式,因为它适用于现有内容,并且在加载后将任何元素添加到DOM。
具体来说,我需要在.btn-group
(Reference)内的引导下拉菜单中执行此操作,所以我做了:
$('body').click('.dropdown-menu li a[href="#"]', function(e) {e.preventDefault() });
这样,它就成为目标,并且不会影响页面上的其他任何内容。
我一直使用:
<a href="#?">Some text</a>
尝试防止页面跳转时。不知道这是否是最好的方法,但是似乎已经运行了好多年。
为防止页面跳动,您需要在致电e.stopPropagation();
后致电e.preventDefault();
:
stopPropagation
防止事件沿DOM树上升。此处提供更多信息:https : //api.jquery.com/event.stoppropagation/
如果要迁移到同一页面上的“锚定部分”而又不向上跳,请使用:
只需使用“#/”代替“#”即可
<a href="#/home">Home</a>
<a href="#/about">About</a>
<a href="#/contact">contact</a> page will not jump up on click..
之后添加一些东西,#
将页面焦点设置到具有该ID的元素上。#/
即使使用jQuery,最简单的解决方案是使用。但是,如果要在jQuery中处理事件,event.preventDefault()
则是一种方法。
该<a href="#!">Link</a>
和<a href="#/">Link</a>
不工作,如果一个人在同一个输入点击超过一次..它只是发生在1次时点击每多投入。
仍然最好的方法是 <a href="#">Link</a>
然后,
event.preventDefault();