在我的Web应用程序中,许多功能被公开为链接,这些链接使onClick处理者公开该功能,但是实际链接设置为JavaScript void void(0),例如So ...
<a href="javascript:void(0)" onclick="myApp.callJen(1303, this)" rel="nofollow">Call Jennifer</a>
当将我的应用注入单页应用程序(SPA)(如backbone.js和Angular)中时,这些链接似乎并不是很好。有时,在此类网站中单击此链接会转到找不到的实际页面(不确定为什么会发生这种情况)。
无论如何,我应该如何替换这些网站的此类链接?
我们说使用真实URL或按钮不是此时的选择。
其他帖子提出了这样的建议。
<a href="#!">Link</a>
或这个..
// Cancel click event
$('.cancel-action').click(function(){
alert('Cancel action occurs!');
});
a { cursor: pointer; color: blue; }
a:hover,a.hover { text-decoration: underline; }
<a class="cancel-action">Cancel this action</a>
老实说,我都不喜欢这两个,所以您可以提出更好的建议吗?
正确的方法是"防止默认操作"。在jQuery活动处理程序中:event.preventDefault()
或简单的return false;
。
专家知识:请注意,void
是操作员,不需要括号。
这是一个古老的问题,但在搜索中出现,所以我想我会添加我的见解。
理想的解决方案是用<button>
元素替换所有<a>
元素,然后将它们作为链接进行样式,例如:
<button id="buttonLink" class="buttonLink" style="background: none;border: none; padding: 0; color: #069; text-decoration: underline; cursor: pointer;">LINK TEXT HERE</button>
我不建议使用这样的内联样式,因此您想将其移至样式表,但这是您需要的最低CS。然后,您将附加点击事件(如果可以提供帮助,则不应使用OnClick,而是在脚本中使用AddeventListner,但这是另一个主题)以使其执行您的功能。