HREF中的#(哈希)字符会阻止preventDefault工作

时间:2013-01-10 12:29:49

标签: jquery href preventdefault

我之前发过一个问题,当链接(original question here)中指定了HREF时,我的jQuery无效。

最常见的建议答案是使用preventDefault,但由于某些原因,如果HREF中有哈希/锚点,则这不起作用;所以例如,如果URL是“http://www.google.com”,它会阻止默认行为并按预期运行jQuery,但如果它是“http://www.google.co.uk#whatever”,它将忽略preventDefault并跟随链接。

我正在使用的链接有一个目标(实际上,它只是同一页面中的目标)。这种古怪的行为是否有解决方法?

HTML

<li><a id="OfficeNav-Bath" class="first" href="#bath" >Bath</a></li>

Jquery的

<script> <!--Offices jquery -->
        $(function() {$("#OfficeNav-Bath").click(function(e){e.preventDefault(); $('.office').removeClass('visible');});});
</script>

3 个答案:

答案 0 :(得分:1)

我认为此代码不存在问题,问题应该在其他地方。

检查出来:

目标:

答案 1 :(得分:1)

我认为您尝试做的事情看起来不错,但您的javascript标记块中有HTML注释可能会破坏您的脚本。删除<!--Offices jquery -->。请记住,您的javascript日志/控制台是您的朋友。

答案 2 :(得分:1)

如果没有关于jquery的确切版本的任何信息,那么#href使用jQuery 1.8.2似乎没有问题。

在href中使用jsFiddle #没有任何影响,event.PreventDefault()正在按预期工作。

event.PreventDefault()中的

DEMO - #href

上面的DEMO代码在链接腐烂的情况下如下。

HTML:

<a id="OfficeNav-Bath" class="first" href="http://www.google.com#whatever" >click me</a>

脚本:

$("#OfficeNav-Bath").on("click", function(event){
  event.preventDefault();
  alert("Prevent Default Works");
})