在使用jQuery时,我是否被迫使用href =“#”?

时间:2011-03-04 17:29:48

标签: jquery html css

所以我写了一小段jQuery,使用.toggleTrigger和rel属性来切换其他项目。

我遇到的第一个问题是,当我使用按钮标签时,它会打开,然后立即关闭。如果我使用锚标签,它可以正常工作。

第二个问题是,如果我向下滚动页面并点击锚标记以在其下方切换某些内容,则由于href="#"属性,它会将我带回页面顶部。

我知道这些必须是新手问题,但我不知道如何绕过它们。

有人可以帮忙吗?

我的href应该指向href="#divThatWillBeToggled"

之类的东西

我是否被迫使用<a>标签作为toggleTrigger? 我无法使用<button>代码?

编辑(请原谅我,我是新来的和编程)

<a href="#" class="toggleTrigger">This is my Toggle Trigger</a>
<div class="toggle">This is info that is hidden and waiting to be toggled by the trigger</div>
信息隐藏,等待切换

7 个答案:

答案 0 :(得分:5)

href属性必须包含在W3C标准定义的锚标记中。但是,您不必使用href="#'。您也可以使用href="javascript:void(0)"

或者,如果您不关心标准,可以省略href,但光标不会像普通超链接一样变为指针。您需要在锚点上的CSS中使用cursor:pointer

答案 1 :(得分:4)

您需要设置锚点的“href”属性,否则不会引发其click事件。要停止滚动行为,请使用preventDefault:

<a href="#">click me</a>

<script>
$(document).ready(function() {
   $("a").click(function(e) {
        e.preventDefault(); // prevent the default behavior (scrolling to the top)
        // perform other code
   });
});
</script>

答案 2 :(得分:2)

  

使用jQuery时,我是否被迫使用href =“#”?

没有。这是一种可怕的做法。 Build on things that work

  

我遇到的第一个问题是,当我使用按钮标签时,它会打开,然后立即关闭。如果我使用锚标签,它可以正常工作。

这听起来好像你没有对cancel the default action做任何事情,因此提交了一份表格。 (听起来像服务器端替代方案与JavaScript不同,所以你不是progressive

  

第二个问题是,如果我向下滚动页面并点击一个锚标记来切换它下面的东西,由于href =“#”属性,它会将我带回到页面顶部。

网址#表示“当前页面的顶部”。如果您不想在JS运行后遵循链接,那么您需要阻止默认操作(如上所述)。

  

我的href应该指向类似href =“#divThatWillBeToggled”的东西

是。默认情况下,div也不应该用CSS隐藏(你可以用JS立即隐藏它),这样如果JS不可用,它将保持可见。

  

我是否被迫使用toggleTrigger的标签?我不能使用标签?

HTML就是标签。你的上一个问题没有意义。

答案 3 :(得分:1)

  

...由于href =“#”属性,它将我带回页面顶部。

如果您通过JavaScript处理锚点击,则在事件处理程序中使用event.preventDefault();return false;取消默认操作(在链接后面)。

最好的办法是让链接真正链接到某个有用的位置,以便禁用JavaScript的用户可以使用该页面(这与网页相关,而不是可以合理地需要JavaScript的网络应用程序,只要他们检查为它,并显示一个很好的消息,如果它没有找到)。因此,取代href="#",这在很大程度上毫无意义,实际上它会带你到一个有意义的地方 - 但是然后用JavaScript覆盖它(在处理程序中使用event.preventDefault();return false;)。

答案 4 :(得分:0)

event.PrevenDefault您正在寻找http://api.jquery.com/event.preventDefault/

答案 5 :(得分:-1)

像这样编写锚标签

href="javascript:"

例如

<a href="javascript:" id="myAnchorTagId">my anchor tag <a>

答案 6 :(得分:-1)

而不是#,如果需要,请使用href="javascript:"