我遇到了「停止」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