jQuery超链接 - href值?

Tom*_*Tom 45 jquery href hyperlink

在我的网站上,我使用jQuery来挂钩元素的事件,即超链接.由于这些超链接仅在当前页面上执行操作,并且不在任何地方引导,我一直在将"#"的href属性放在:

<a href="#">My Link</a>
Run Code Online (Sandbox Code Playgroud)

但是在某些浏览器中,这会导致页面从右向上滚动,这显然是不合需要的行为.我已尝试使用空白href值,或不包括一个,但鼠标悬停时鼠标不会更改为手形光标.

我该放什么?

Bog*_*scu 51

$('a').click(function (event) 
{ 
     event.preventDefault(); 
     //here you can also do all sort of things 
});
Run Code Online (Sandbox Code Playgroud)

然后你可以放入href你想要的任何东西,jQuery将触发该preventDefault()方法,你将不会被重定向到那个地方.

  • 为什么不只是'返回false;`? (6认同)
  • @RoToRa?如何在事件上使用jQuery的`return false`行为来阻止浏览器的默认操作和事件冒泡非jQuery? (3认同)
  • 除非他通过JS将锚点放在DOM中(例如:AJAX请求),否则.live()是无用的 (2认同)

tal*_*nes 39

那些仅用于提供点击事件但实际上并未链接到其他内容的"锚点"应该是按钮元素,因为这就是它们的真实含义.

它的样式可以这样:

<button style="border:none; background:transparent; cursor: pointer;">Click me</button>
Run Code Online (Sandbox Code Playgroud)

当然,点击事件可以附加到按钮而不用担心浏览器跳到顶部,并且无需添加无关的javascript,例如onclick ="return false;" 或event.preventDefault().

  • 有趣的方法,但按钮不是链接。您无法右键单击按钮并选择“在新标签页中打开”,这是一种常见的浏览习惯。&lt;a&gt;应包含有效的href =“”,并应由javascript覆盖(以防js处于活动状态)。在我们只需要Ajax请求的情况下,这种方法是最好的。 (2认同)

gar*_*uan 36

你应该真的在那里放一个真正的链接.我不想听起来像一个学究,但这是一个相当不好的习惯进入.JQuery和Ajax应该永远是你实现的最后一件事.如果你有一个无处可去的链接,那么你做得不对.

我没有破坏你的球,我的意思是尽可能最好的意图.

  • 他真正应该做的是将链接指向将执行非javascript等效项的位置.然后覆盖jQuery中的操作.我对此很兴奋...... (8认同)
  • 我会在这里非常小心,因为这种谈话很快就会失控.我向你保证,我的意思是没有伤害或侮辱任何人.但是对于一个网站,我无法想到任何一个有没有链接的地方. (3认同)
  • 我自己完成了,但是没有,当代码中不相关的部分出现javascript错误导致所有内容崩溃时,或者当页面加载缓慢时,我也已经有点傻了人们可以快速按下按钮.所以现在,我不再这样做了. (3认同)
  • 如果你没有真正的链接,它就不可能优雅地失败,并且很可能大多数搜索引擎永远不会抓取那些页面,尽管有些人可以正确地解析JS而不保证. (2认同)
  • 尽管不使用链接有更好的方法,但作者可能会在没有机会重新设计的情况下维护或修改某些内容,在这种情况下,原始问题需要直接回答; 当然,这个答案在开始项目时作为一般知识的最佳实践是好的,因此它是这个主题中的良好支持材料.我认为这是一个非直接的答案,它被高估了. (2认同)
  • 100%同意@gargantaun,如果它是一个网站...如果你正在开发一个网络应用程序...我认为这些"假"链接是可以的. (2认同)

bar*_*art 11

为什么用<a href>?我像这样解决它:

<span class='a'>fake link</span>

它的风格:

.a {text-decoration:underline; cursor:pointer;}

您可以使用jQuery轻松访问它:

$(".a").click();

  • -1:当HTML中存在语义和功能等价物时,不要使用带语法的无语义HTML来伪造语义默认行为的视觉效果.庞大的是对的. (13认同)

ror*_*ryf 9

将return false添加到单击处理程序的末尾,这可以防止出现尝试重定向页面的浏览器默认处理程序:

$('a').click(function() {
// do stuff
return false;
});
Run Code Online (Sandbox Code Playgroud)


djs*_*ark 5

使用jquery,你可能只希望得到那些带有'#'的人

$('a[href=#]').click(function(){return false;});
Run Code Online (Sandbox Code Playgroud)

如果您使用最新的jquery(1.3.x),则在页面更改时无需再次绑定它:

$('a[href=#]').live('click', function(){return false;});
Run Code Online (Sandbox Code Playgroud)


小智 5

你应该使用<a href="javascript:void(0)" ></a> 而不是<a href="#" ></a>

  • 一个常见的错误是忘记了 `&lt;a href="javascript:void(0);" 中的分号 &gt;&lt;/a&gt;` (6认同)