使span / div / p href-like或停止href“执行”链接

时间:2011-04-18 09:37:22

标签: javascript html css

我有问题是“停止”href执行任何链接。 所以我的问题是:

1)是否有可能替换生成内部(#)链接的href元素与任何组件,可能是<p><div><span>(或任何可能正常工作的) <a>元素的相同行为(悬停,下划线等)但不执行任何链接?

2)替代方案,避免href元素执行链接的“技巧”?

1或2,不使用jquery或任何其他js库

谢谢随机

5 个答案:

答案 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()cancelBubblereturn 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);
}