我有问题是“停止”href执行任何链接。 所以我的问题是:
1)是否有可能替换生成内部(#)链接的href元素与任何组件,可能是<p>
,<div>
或<span>
(或任何可能正常工作的) <a>
元素的相同行为(悬停,下划线等)但不执行任何链接?
2)替代方案,避免href元素执行链接的“技巧”?
1或2,不使用jquery或任何其他js库
谢谢随机
答案 0 :(得分:1)
您可以向特定onclick
元素添加<a>
属性:
<a href="whatever" onclick="return false"></a>
或者像这样修改href
:
<a href="javascript:"></a>
使它们看起来像链接,而无需重定向浏览器。
如果相反,您已经拥有一堆href
s链接,并且您只希望将它们全部重定向,那么以下jQuery将对页面上的所有链接执行此操作:
$(function () {
$('a').click(false);
});
虽然好又短,但上面只适用于jQuery-1.4.3 +。如果您使用的是旧版本,则可以使用展开的表单:
$(function () {
$('a').click(function () { return false; });
});
答案 1 :(得分:1)
有各种各样的技巧可以用来做这种事情,但是你需要注意的是修改用户从浏览器中获得的行为。 例如,可以交换'OK'和&amp;的含义。 “取消”按钮,但这只会让用户感到困惑。 (一个极端的例子,我知道,但你明白了)
如果您可以提供有关您尝试这样做的更多信息,可能有更好的方法来处理事情。
答案 2 :(得分:0)
是。您可以阻止默认操作的链接 - 建议的方法是让链接正常工作(如果JS被禁用或不可用 - 请考虑“移动浏览器”),然后使用JS覆盖默认操作。
不幸的是,由于跨浏览器不兼容,有三种方法可以做到这一点(“传统”,“W3C”和“IE”),你需要所有这些方法:stopPropagation()
,cancelBubble
和return false
。请参阅QuirksMode上的完整示例:http://www.quirksmode.org/js/events_order.html#link9
(顺便提一下,大多数JS框架都是抽象出来的,所以在jQuery中你会这样做:
$('a').click(function(event){
// do something on click here
event.preventDefault();
});
这与QuirksMode示例的作用相同,但它是一个更易于阅读的示例。)
答案 3 :(得分:0)
通过js添加onclick =“this.href ='javascript:void(0)';”禁用链接像这样:
<a href="#" onclick="this.href='javascript:void(0)';">link text</a>
您可以使用类似的策略使其他元素工作链接链接:
<div onclick="this.href='http://www.mysite.com';"></div>
答案 4 :(得分:0)
这适用于IE,Chrome和firefox:
<a href="javascript:functionX();">text link</a>
在函数return void(0)中:
function functionX() {
...
return void(0);
}