【发布时间】:2013-01-10 12:29:48
【问题描述】:
我之前发布了一个问题,即在链接中指定 HREF 时我的 jQuery 无法正常工作 (original question here)。
最常见的建议答案是使用 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>
【问题讨论】:
-
在 href 中使用 jsFiddle
#没有影响,event.PreventDefault()按预期工作。见DEMO -
你有没有试过把'return false;'在您的点击事件功能结束时?
-
@algorhythm,是的,恐怕会受到同样的影响。
-
@OliJeffery:
return false等于preventDefault和stopPropagation,因此如果问题在于阻止默认操作,那么return false没有任何区别是有道理的。PreventDefault似乎在最新的 FF、Chrome 和 IE9 中按预期工作。您是否在特定浏览器中运行特定版本的 jQuery?你能创建一个jsfiddle 来演示这个问题吗?
标签: jquery href preventdefault