0

我以前是这样做href="#"的,但有没有其他方法?

因为单击此类链接有时可以将用户转到所查看页面的前面,我想通过单击链接来加载一些脚本。

4

7 回答 7

2

继续使用<a href="#">Click</a>,但使用一些 Javascript/jQuery 来防止页面跳转:

$('a').click(function() {
    // do whatever
    return false;
}

return false 行将阻止浏览器跟随链接,在这种情况下,这将阻止它跳转到页面顶部。

您应该将链接保留为<a>标签,而不是使用spanor div,因为这更具语义(即用户/爬虫将知道它应该做某事,因为它是一个链接)。

您还应该避免使用内联 Javascript(即onclick="doSomething()"),因为如果您想改变行为,这将是一个巨大的痛苦,并且您还希望使您的 Javascript 尽可能不显眼

于 2012-06-07T09:22:25.913 回答
1

是的,href="#" 让你滚动......

你可以试试:

<a href="javascript:void(0);" onclick="doIt(); return false;">Woho</a>
于 2012-06-07T09:01:51.363 回答
0

为什么不使用onclick

<a href="#" onclick="doMyThing() return false;" />

关于 SO, href-tag-for-javascript-links-or-javascriptvoid0 的类似讨论

于 2012-06-07T08:57:05.110 回答
0

good markup如果您想在同一页面上进行活动。所以,如果你使用它div or span并在上面定义你的,那就更好click event了。

div{
 color:red;
}

JS

$('div').click{function(

)};
于 2012-06-07T08:59:05.120 回答
0
href="javascript:void(0)"

谢谢亚尼罗_

于 2012-06-07T09:02:03.603 回答
0

正如@Yaniro 评论的那样,您可以使用 href="javascript:void(0)",原因是:

JavaScript 无效 0 解释

Web 浏览器将尝试获取任何用作 URL 的内容并加载它。我们可以在不加载新页面的情况下使用 JavaScript Alert 语句的唯一原因是因为 alert 是一个返回空值的函数。这意味着当浏览器尝试加载新页面时,它会看到 null 并且没有要加载的内容。

这里要注意的重要一点是,如果您确实使用 JavaScript 语句作为返回值的 URL,浏览器将尝试加载页面。为防止这种不必要的操作,您需要在此类语句上使用 void 函数,该函数将始终返回 null 并且永远不会加载新页面。

摘自:JavaScript Void 0 解释

于 2012-06-07T09:02:06.320 回答
0

您可以简单地onclick在任何元素中使用该属性,例如

<span onclick="foo()">Do something</span>

使用习惯href="#"是早期浏览器不onclick普遍支持的保留,仅用于链接(在技术意义上:具有属性的a元素)。href那是桥下的水,但旧习惯往往不会消失,特别是如果人们只是在不知道原因的情况下采用它们。

而不是span,您也可以使用a。没有任何href属性,a元素就没有特殊含义。

根据非破坏性原则,元素应该使用 JavaScript 动态生成,而不是作为页面的静态部分(因为禁用 JavaScript 时,它只会坐在那里,给人一种相关的印象,但不做任何事情)。

于 2012-06-07T09:25:45.653 回答