2011-04-18 41 views
1

我遇到了“停止”href执行任何链接的问题。 所以我的问题是:让span/div/p href-like或停止href“正在执行”链接

1)是否有可能取代产生任何组件内部(#)链接HREF元素,也许<p><div><span>(或任何可以工作),其保持<a>相同的行为元素(悬停,下划线等)但不执行任何链接?

2)另外,避免href元素执行链接的“诀窍”?

1或2,而不使用jquery或任何其他JS库可能

由于随机化

回答

0

是的。您可以阻止默认操作中的链接 - 推荐的方法是让链接正常工作(如果JS被禁用或不可用 - 请考虑“移动浏览器”),然后用JS重写默认操作。

不幸的是,由于跨浏览器的不兼容,有三种方法可以做到这一点(“传统”,“W3C”和“IE”),你需要所有的人:stopPropagation()cancelBubblereturn false。看到怪异模式一个完整的例子:http://www.quirksmode.org/js/events_order.html#link9

(顺便说一句最JS框架抽象送人,所以在jQuery的你可以这样做:

$('a').click(function(event){ 
    // do something on click here 
    event.preventDefault(); 
}); 

这做同样的事情的怪异模式例子,但它是一个更容易阅读的例子。)

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; }); 
}); 
+0

感谢您的答复。 是否便携? (至少firefox 4,资源管理器7/8) – Randomize 2011-04-18 14:58:42

+0

@Randomize是的它是 – 2011-04-18 23:23:56

1

有一些可以用来做这种事情各种花样,但你必须要小心被修改的是什么来自用户期望从浏览器获得的行为。 例如,它可以交换'确定'的含义&'取消'按钮,但这只会混淆用户。 (一个极端的例子,我知道,但你明白了)

如果你可以提供更多关于你为什么试图这样做的信息,可能有更好的方法来处理事情。

0

要禁用通过js的链接add 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> 
+0

感谢您的第一个解决方案在Firefox 4.0上正常工作。目前我无法尝试Explorer 7/8,但据你所知,它是否便携? – Randomize 2011-04-18 14:56:52

+0

我很确定,我以前用过它,不记得它有问题。 – jackreichert 2011-04-18 23:48:24

0

这是工作在IE,Chrome和Firefox:

<a href="javascript:functionX();">text link</a> 

在函数返回void(0):

function functionX() { 
... 
return void(0); 
}