在HREF LNK中使用JavaScript void(0)的替代方法是什么?(用于骨干和水疗站点)



在我的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,但这是另一个主题)以使其执行您的功能。

最新更新