2011-06-27 159 views
6

我正在創建一個從MySQL/PHP查詢錨定標記列表;錨標籤調用JavaScript函數。錨標記列表創建

的「第二十二條軍規」,我有是:

  • HREF =「#」每次點擊的錨標記的一個時間(很煩人)
  • 消除HREF使得頁面跳轉到頂部=「#」意味着遊標不會隨着錨標籤的懸停而發生變化,該錨標籤也不會具有錨標籤的外觀。

我知道有一種方法可以用JavaScript處理這個問題(可能是jQuery),但我現在還不記得這是怎麼回事。不過,我真的更喜歡更簡單的HTML修復程序(如果有的話)不需要我進入JavaScript。

編輯: 「不需要我進入 JavaScript的」 ==「不需要在JavaScript中廣泛的變化。」

回答

2

一個更簡單的HTML修正爲您提供:個人來講,對於普通的測試環節我只是用href=""

對於指向一個javascript函數我傾向於使用href="javascript:;"鏈接。無論哪種方式,你會停止頁面跳躍。

+1

謝謝Scott。這對我有效。 –

+0

哇,這可能是我找到的最有用的tid位之一+1。 – 2011-07-22 09:05:56

+0

乾杯!簡單但有效:-) –

4

在你的JavaScript功能,您應該return false,或使用jQuery你可以使用preventDefault()

例子:

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

或者你的情況:

<a href=「#」 onclick="foo();return false;"> 

或更改HREF到javascript:void(0)

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

理想情況下,您的鏈接會在沒有javascript的情況下降級,因此通常會避免使用第三個選項。

1

在onclick或foo()函數內返回false。

1

您需要在您的點擊事件處理程序的某個地方撥打event.preventDefault();。在香草的JavaScript,這是可以做到像這樣:

<script type="text/javascript"> 
    function foo(e) { 
    e.preventDefault(); 
    // other code 
    } 
</script> 
<a href="#" onclick="foo(e);"></a> 

此外,您還可以返回false:

<a href="#" onclick="foo();return false;/> 

這可以在jQuery中也做得相當簡單:

$('.mylink').click(function(e) { 
    e.preventDefault(); 
    // other code 
}); 

使用return false;的缺點是,這也可以防止事件冒泡DOM。如果你不關心事件冒泡,可以使用false,但是我個人覺得最好使用event.preventDefault();,除非你特別想停止事件冒泡。

+0

嘿,我甚至沒有意識到'preventDefault()'是香草javascript - 顯示我一直在用jQuery作爲我的柺杖一直在跛行! +1很好的解釋。 –

+0

jQuery確實會傳遞自己的事件對象,但它只是爲了幫助跨瀏覽器進行規範化。 – scurker

0
<html> 
    <head> 

    </head> 
    <body> 
    <style> 
    a { 
     text-decoration: underline; 
    } 
    a:hover { 
     text-decoration: underline; 
    } 
    </style> 
    <script type="text/javascript"> 
     function foo() { 
     alert('Hello World'); 
     } 
    </script> 
    <a onclick="foo();">Click Here</a> 
    </body> 
    </html> 

只要添加CSS並刪除href似乎很好。