我目前正在使用带有jQuery的<a>
标签来启动点击事件等等。
示例是<a href="#" class="someclass">Text</a>
但我讨厌'#'如何使页面跳转到页面顶部。我该怎么做呢?
答案 0 :(得分:275)
所以这是旧的但是......以防有人在搜索中发现这一点。
只需使用"#/"
代替"#"
,页面就不会跳转。
答案 1 :(得分:221)
在jQuery中,当你处理click事件时,返回false以阻止链接以通常的方式响应阻止默认操作(即访问href
属性)地点(根据PoweRoy的评论和Erik's answer):
$('a.someclass').click(function(e)
{
// Special stuff to do when this link is clicked...
// Cancel the default action
e.preventDefault();
});
答案 2 :(得分:57)
你甚至可以这样写:
<a href="javascript:void(0);"></a>
我不确定它是一种更好的方式,但它是一种方式:)
答案 3 :(得分:24)
<a href="#!" class="someclass">Text</a>
javascript
)<a href="javascript:void(0);" class="someclass">Text</a>
jQuery
)<a href="#" class="someclass">Text</a>
<script>
$('a.someclass').click(function(e) {
e.preventDefault();
});
</script>
答案 4 :(得分:14)
您可以使用event.preventDefault()
来避免这种情况。在此处阅读更多内容:http://api.jquery.com/event.preventDefault/。
答案 5 :(得分:10)
只需使用<input type="button" />
代替<a>
,并根据需要使用CSS将其设置为类似链接的样式。
按钮专门用于点击,它们不需要任何href属性。
最好的方法是使用onload操作来创建按钮并通过javascript将其附加到您需要的位置,因此在禁用javascript的情况下,它们根本不会显示,也不会混淆用户。
当您使用href="#"
时,会有大量不同的链接指向同一位置,当代理不支持JavaScript时,这些链接将无效。
答案 6 :(得分:8)
如果您想使用锚点,可以像建议的其他答案一样使用http://api.jquery.com/event.preventDefault/。
您还可以使用任何其他元素(如span)并将click事件附加到该元素。
$("span.clickable").click(function(){
alert('Yeah I was clicked');
});
答案 7 :(得分:6)
您可以将#0
用作href,因为0
不允许作为ID,页面不会跳转。
<a href="#0" class="someclass">Text</a>
答案 8 :(得分:4)
如果元素没有有意义的href值,那么它实际上不是一个链接,那么为什么不使用其他元素?
根据Neothor的建议,跨度也是合适的,如果样式正确,则可以明显地看作是可以点击的项目。您甚至可以附加悬停事件,以便在用户的鼠标移动时使元素“亮起”。
然而,说到这一点,您可能需要重新考虑网站的设计,以便它在没有javascript的情况下运行,但在可用时通过javascript进行增强。
答案 9 :(得分:4)
只需使用
<强> 强>
<a href="javascript:;" class="someclass">Text</a>
JQUERY
$('.someclass').click(function(e) { alert("action here"); }
答案 10 :(得分:3)
$('a[href="#"]').click(function(e) {e.preventDefault(); });
答案 11 :(得分:2)
与href =&#34;#&#34;的链接;应该几乎总是用按钮元素替换:
<button class="someclass">Text</button>
使用带有href =&#34的链接;#&#34;这也是一个可访问问题,因为屏幕阅读器可以看到这些链接,它们会读出&#34;链接 - 文本&#34;但如果用户点击它就不会去任何地方。
答案 12 :(得分:2)
我一直用:
<a href="#?">Some text</a>
试图阻止页面跳转时。不确定这是否是最好的,但似乎多年来一直运作良好。
答案 13 :(得分:2)
如果您想在不跳页的情况下迁移到同一页面上的锚点部分,请使用:
只需使用&#34;#/&#34;而不是&#34;#&#34; 例如
<?php
function year(){
$select = "";
$select .= '<select>';
for ($i = 1998; $i<2015;){
$select .= "<option>$i</option>";
$i++;
}
return $select .= '</select>';
}
$try = year();
echo '<table border="1">';
for ($row =1; $row < 11; $row++){
if ($row % 2 == 0) {
echo "<tr><td>$try</td></tr>";
}
else
{
echo "<tr><td>H</td></tr>";
}
}
echo '</table>';
答案 14 :(得分:2)
我用过:
<a href="javascript://nop/" class="someClass">Text</a>
答案 15 :(得分:2)
你可以传递一个没有href属性的锚标记,并使用jQuery来执行所需的操作:
<a class="foo">bar</a>
答案 16 :(得分:1)
为防止页面跳转,您需要在致电e.stopPropagation();
后致电e.preventDefault();
:
stopPropagation
可防止事件上升到DOM树。更多信息:https://api.jquery.com/event.stoppropagation/
答案 17 :(得分:1)
我使用这样的东西:
<a href="#null" class="someclass">Text</a>
答案 18 :(得分:1)
length
技巧有效,但会向浏览器添加历史事件。因此,单击后退不起用户可能想要/期望的那样。
#/
是我的方式,因为它适用于现有内容,以及加载后添加到DOM的所有元素。
具体来说,我需要在$('body').click('a[href="#"]', function(e) {e.preventDefault() });
(Reference)内的bootstrap下拉菜单中执行此操作,所以我做了:
.btn-group
这种方式是针对性的,并且不影响页面上的任何其他内容。
答案 19 :(得分:1)
处理你的jquery后你也可以返回false。
例如
$(".clickableAnchor").live(
"click",
function(){
//your code
return false; //<- prevents redirect to href address
}
);
答案 20 :(得分:0)
在#
之后添加一些内容,将页面焦点设置为具有该ID的元素。最简单的解决方案是使用#/
,即使您使用的是jQuery。但是,如果您在jQuery中处理事件,event.preventDefault()
是可行的方法。
答案 21 :(得分:0)
有四种类似的方法可以防止页面在没有任何JavaScript的情况下跳至顶部:
选项1:
<a href="#0">Link</a>
选项2:
<a href="#!">Link</a>
选项3:
<a href="#/">Link</a>
选项4(不推荐):
<a href="javascript:void(0);">Link</a>
但是,如果要在jQuery中处理click事件,最好使用event.preventDefault()
。
答案 22 :(得分:0)
如果<a href="#!">Link</a>
和<a href="#/">Link</a>
必须多次单击同一输入,则它们将不起作用。.对于多个输入中的每个输入,只需进行一次事件单击。
最好的方法是使用<a href="#">Link</a>
然后
event.preventDefault();