所以我写了一小段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>
信息隐藏,等待切换
答案 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:"
。