2011-06-27 95 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似乎很好。