2011-04-18 75 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); 
}