2009-05-29 49 views
110

我使用jQuery,我需要使一些錨標籤不執行任何操作。如何製作錨標籤沒有提及?

我通常會這樣寫:

<a href="#">link</a> 

然而,這指的是頁面的頂部!

+0

這樣做是因爲jQuery將處理click事件,所以我希望鏈接像一個阿克爾鏈接,但像一個JavaScript函數 – ahmed 2009-05-29 07:25:18

+0

有效的重複數據刪除:http://stackoverflow.com/questions/265478/preventdefault-on-an-a-tag – annakata 2009-05-29 10:02:06

+1

正如以下答案之一所述:如果您不希望鏈接指向資源,請不要使用A元素。 – 2009-05-29 10:06:07

回答

84

如果你不想讓它指向任何東西,你可能不應該使用<a>(錨)標籤。

如果你想要的東西看起來像一個鏈接,但並不像一個鏈接,最好使用適當的元素(如<span>),然後使用CSS樣式是:

<span class="fake-link" id="fake-link-1">Am I a link?</span> 

.fake-link { 
    color: blue; 
    text-decoration: underline; 
    cursor: pointer; 
} 

而且,考慮到你標記了這個問題「jQuery」,我假設你想附加一個click事件處理程序。如果是這樣,只要做與上面相同的事情,然後使用類似下面的JavaScript:

$('#fake-link-1').click(function() { 
    /* put your code here */ 
}); 
+33

這有一個問題:它不會允許標籤導航。 – 2009-05-29 07:26:24

+6

請注意(正如Iraimbilanja指出的那樣)跨度方法在這裏禁用了使用鍵盤調用函數的可能性,我認爲這是一個可用性問題。 – 2009-05-29 07:38:52

+3

也是一個可訪問性問題。你可以通過使用一個按鈕元素來解決它(由JavaScript生成,所以非JS用戶不會得到一個破壞的控件)。 – Quentin 2009-05-29 08:13:03

19

你是什麼意思?

<a href='about:blank'>blank page</a> 

<a href='whatever' onclick='return false;'>won't navigate</a> 
31

來處理這個正確的方法是,當你處理鏈接

HTML

<a href="#" id="theLink">My Link</a> 

JS

「破」 與jQuery的鏈接
$('#theLink').click(function(ev){ 
    // do whatever you want here 

    ev.preventDefault(); 
    ev.stopPropagation(); 
}); 

最後兩次調用會停止瀏覽器解釋點擊。

33

讓它做什麼都沒有,用這個:

<a href="javascript:void(0)"> ... </a> 
196

有一些不完美的解決方案:

1。鏈接到一個假的錨

<a href="#"> 

問題:點擊鏈接跳回頁面

2的頂端使用比 'A'

使用span標籤以外的標籤並使用jquery來處理點擊

問題:打破鍵盤導航,必須手動更改懸停光標

3.鏈接到一個javascript void函數

<a href="javascript:void(0);"> 
<a href="javascript:;"> 

問題:斷裂處連接IE圖像時

解決方案

由於這些都有他們的問題,解決方法我已經解決的辦法是鏈接到假錨,然後從onClick方法返回false:

<a href="#" onClick="return false;"> 

不是最簡潔的解決方案,但它解決了上述方法的所有問題。

4

我知道這是一個老問題,但我想我想補充我的兩分錢反正:

這取決於什麼鏈接會做,但通常情況下,我會指着一處鏈接網址也可能會被顯示/做同樣的事情,例如,如果你正在做關於箱子裏面很小的彈出:

<a id="about" href="/about">About</a> 

然後用jQuery

$('#about').click(function(e) { 
    $('#aboutbox').show(); 
    e.preventDefault(); 
}); 

這樣,非常舊瀏覽器(或禁用JavaScript的瀏覽器)仍然可以導航到單獨的關於頁面,但更重要的是,Google也會檢測並抓取關於頁面的內容。

2

只爲我工作的事情是上述的組合:

首先在UL的李

<li><a onclick="LoadTab2_1()" href="JavaScript:void(0)">All Assigned</a></li> 

然後在LoadTab2_1我手動切換標籤div

$("#tabs-2-1").hide(); 
    $("#tabs-2-2").show(); 

這是因爲還斷開斷開標籤中的動作

您還需要手動執行的標籤樣式當主標籤改變事物

$("#secTab1").addClass("ui-tabs-active").addClass("ui-state-active").addClass("ui-state-hover").addClass("ui-state-focus"); 
    $("#secTab1 a").css("color", "#ffffff"); 
4

確保您希望您的所有鏈接停止有href="#!"(你想要什麼的,真的),然後用這個:

jq('body').on('click.stop_link', 'a[href="#!"]', 
function(event) { 
    event.preventDefault(); 
}); 
0
<a href="#" onclick="SomeFunction()" class="SomeClass">sth.</a> 

,這是我的錨TA G。所以在onClick =「」事件在這裏返回false是沒有用的。 我只是刪除的href =「#」屬性和它的工作對我來說就像下面

<a onclick="SomeFunction()" class="SomeClass">sth.</a> 

,我需要添加此CSS。

.SomeClass 
{ 
    cursor: pointer; 
} 
2

你可以有一個HTML錨(a標籤)沒有href屬性。離開關href屬性&它不會鏈接到任何東西:

<a>link</a> 
-1

我知道這是標記爲jQuery的問題,但你可以用AngularJS回答這個問題,也。

在你的元素

,加上NG-點擊指令,並使用$事件變量,它的單擊事件......阻止其默認行爲:

<a href="#" ng-click="$event.preventDefault()"> 

您可以在$事件變量甚至傳遞到一個功能:

<a href="#" ng-click="doSomething($event)"> 

在該函數中,您可以通過點擊事件來做任何事情。

11

這裏是<a>標籤的href標籤屬性的三種方式是指什麼:

<a href="JavaScript:void(0)"> link </a> 

<a href="javascript:;">link</a > 

<a href="#" onclick="return false;"> Link </a> 
7

有這麼多的方法來做到這就像

不要添加和href屬性

<a name="here"> Test <a> 

您可以添加onclick事件而不是href,如

<a name="here" onclick="YourFunction()"> Test <a> 

也可以添加空函數這樣這將是最好的方式

<a href="javascript:void(0);"> 
<a href="javascript:;"> 
1

我遇到過這個問題上的WordPress站點。下拉菜單中的標題始終具有href=""的屬性,並且標頭插件只能用於標準網址。最簡單的解決方案就是在頁腳中運行此代碼:

jQuery('[href=""]').click(function(e){ 
    e.preventDefault(); 
}); 

這樣可以防止空白錨點做任何事情。

0

您可以通過

<a style='cursor:pointer' >Link</a>