我有一个已经利用URL中的哈希的网站,我不想改变它。当我使用Zurb Foundation并使用 href="#"
来创建菜单项时,点击它会删除先前的哈希值。
如何覆盖这种行为?
更新:我认为最好保持使用 <a>
元素,因为如果我改变它,会影响绑定到该HTML元素的样式。在使用设计框架时,我总是喜欢保持默认约定而不是乱修改CSS属性。
谢谢。
我有一个已经利用URL中的哈希的网站,我不想改变它。当我使用Zurb Foundation并使用 href="#"
来创建菜单项时,点击它会删除先前的哈希值。
如何覆盖这种行为?
更新:我认为最好保持使用 <a>
元素,因为如果我改变它,会影响绑定到该HTML元素的样式。在使用设计框架时,我总是喜欢保持默认约定而不是乱修改CSS属性。
谢谢。
preventDefault
来阻止浏览器设置哈希(hash值)。$('.mylink').click(function(event){
event.preventDefault();
});
return false
,它是event.preventDefault
和event.stopPropagation
的简写。 - Ben Sewards你可以使用javascript:;
替代#
来作为href属性,这样不会改变URL。
<a href="javascript:;">:Link</a>
几乎永远不要使用href="#"
。这是一个链接到未定义锚点的链接(它将指向页面顶部)。通常使用它的人是因为他们想通过它来实现 JavaScript 的效果。
如果你要使用链接,那么它应该指向有用的地方。通常这将是另一个页面,该页面使用服务器端技术以获得与 JavaScript 相同的效果(尽管速度可能会慢一些)。然后您可以防止链接的正常行为。
例如:
<a href="/foo/bar" class="whatever">Foo: Bar</a>
使用该脚本:
addEventListener('click', function (ev) {
if (ev.target.classList.contains('whatever')) {
ev.preventDefault();
loadWithAjax(ev.target.href);
}
});
如果JavaScript所做的事情无法用链接表达等效功能,则首先不应该使用链接。使用<button>
,并严肃考虑使用JavaScript/DOM将其添加到文档中,而不是HTML。classList
或addEventListener
的旧浏览器检查浏览器支持并查找兼容性程序留给读者作为练习。使用YUI、jQuery或类似工具是处理兼容性的一种方法。)href
属性包含有用的 URL。它们不应该使用 href="#"
(示例中的代码只是占位符),因此我的答案仍然有效。 - Quentin不要使用"#",而是使用"javascript:void(0)"。有关更多信息,请参见此链接Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?
只需要使用这个:
<a href="javascript:void()">text</a>
我已经采取以下措施来防止带有 href="#" 属性的所有标签执行导航(使用 JQuery):
$('a[href$="#"]').click(function (event) {
event.preventDefault ? event.preventDefault() : event.returnValue = false;
});
a[href$="#"]
) 是一个打字错误吗? - code这对我来说有效。
$(document).on('click', 'a', function (e) {
if ($(this).attr('href') == '#') {
e.preventDefault();
}
});
请将以下代码添加到您的默认库中。
当点击事件发生时,它将获取href值,并且如果发现哈希(#)值,则会阻止默认事件,从而避免重定向到href值。
$(document).on('click', 'a', function (e) {
if ($('#'+e.target.id).attr('href')=='#') {
e.preventDefault();
}
});
<a href="javascript:;" class="ouvrir">Newsletter</a>
<a href="#hash" onclick="event.preventDefault();"></a>
。