我遇到了“停止”href执行任何链接的问题。 所以我的问题是:让span/div/p href-like或停止href“正在执行”链接
1)是否有可能取代产生任何组件内部(#)链接HREF元素,也许<p>
,<div>
或<span>
(或任何可以工作),其保持<a>
相同的行为元素(悬停,下划线等)但不执行任何链接?
2)另外,避免href元素执行链接的“诀窍”?
1或2,而不使用jquery或任何其他JS库可能
由于随机化
我遇到了“停止”href执行任何链接的问题。 所以我的问题是:让span/div/p href-like或停止href“正在执行”链接
1)是否有可能取代产生任何组件内部(#)链接HREF元素,也许<p>
,<div>
或<span>
(或任何可以工作),其保持<a>
相同的行为元素(悬停,下划线等)但不执行任何链接?
2)另外,避免href元素执行链接的“诀窍”?
1或2,而不使用jquery或任何其他JS库可能
由于随机化
是的。您可以阻止默认操作中的链接 - 推荐的方法是让链接正常工作(如果JS被禁用或不可用 - 请考虑“移动浏览器”),然后用JS重写默认操作。
不幸的是,由于跨浏览器的不兼容,有三种方法可以做到这一点(“传统”,“W3C”和“IE”),你需要所有的人:stopPropagation()
,cancelBubble
和return false
。看到怪异模式一个完整的例子:http://www.quirksmode.org/js/events_order.html#link9
(顺便说一句最JS框架抽象送人,所以在jQuery的你可以这样做:
$('a').click(function(event){
// do something on click here
event.preventDefault();
});
这做同样的事情的怪异模式例子,但它是一个更容易阅读的例子。)
可以任一种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; });
});
有一些可以用来做这种事情各种花样,但你必须要小心被修改的是什么来自用户期望从浏览器获得的行为。 例如,它可以交换'确定'的含义&'取消'按钮,但这只会混淆用户。 (一个极端的例子,我知道,但你明白了)
如果你可以提供更多关于你为什么试图这样做的信息,可能有更好的方法来处理事情。
要禁用通过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>
感谢您的第一个解决方案在Firefox 4.0上正常工作。目前我无法尝试Explorer 7/8,但据你所知,它是否便携? – Randomize 2011-04-18 14:56:52
我很确定,我以前用过它,不记得它有问题。 – jackreichert 2011-04-18 23:48:24
这是工作在IE,Chrome和Firefox:
<a href="javascript:functionX();">text link</a>
在函数返回void(0):
function functionX() {
...
return void(0);
}
感谢您的答复。 是否便携? (至少firefox 4,资源管理器7/8) – Randomize 2011-04-18 14:58:42
@Randomize是的它是 – 2011-04-18 23:23:56