【问题标题】:jQuery: event.preventdefault not working with Firefox (mac and PC)jQuery:event.preventdefault 不适用于 Firefox(mac 和 PC)
【发布时间】:2011-05-03 15:48:34
【问题描述】:

我有一点 jQuery 在 H3 链接之后切换段落。它适用于 PC 上的 IE 和 Chrome,以及 Mac 上的 Safari 和 Chrome。在两个平台上的 Firefox 上,单击链接根本没有任何反应?

<script type="text/javascript">
$(document).ready(function(){
$("#rightcolumn .article .collapse").hide();
$("#rightcolumn h3 a").click(function(){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue = false; 
};
$(this).parent().next().toggle(400);
});
});
</script> 

如果我禁用 event.preventDefault();它在 Firefox 中工作的部分,但当然我让页面跳到我不想要的顶部。我该怎么做才能让它在 Firefox 中运行?

【问题讨论】:

  • 也可以试试event.stopPropagation()
  • @Thomas:与是否传播无关。问题是他没有声明函数参数,等等非 IE 浏览器,在 event 上调用 anything 会引发异常,因为未定义 event。见尼基的回答。
  • @T.J 是的,你是对的。我忘记了 stopProgagation 的真正含义,因为它帮助我解决了一些晦涩的问题。谢谢提醒。

标签: jquery firefox toggle preventdefault


【解决方案1】:

您的函数中缺少事件声明。同样作为惯例,我看到大多数示例使用 evt 作为变量名。

$("#rightcolumn h3 a").click(function(evt)
{
   evt.preventDefault();
   $(this).parent().next().toggle(400);
}

来自 T.J. 的评论Crowder 将 evt 包含在 function() 中

您需要向点击处理程序声明参数(事件不是全局的,除非在 IE 和浏览器上向特定于 IE 的网站抛出骨骼。)请注意,您不需要(或不希望)测试防止默认。 jQuery 在原生不提供它的浏览器上提供它

更多关于jQuery events的解释

【讨论】:

  • 有了这样的答案,我建议告诉他们你改变了什么,以及例子。 @Andy:您需要将参数声明给click 处理程序(event 不是全局的,除非在 IE 和向 IE 特定网站抛出骨头的浏览器上。)请注意,您不需要(或不想要) 测试preventDefault。 jQuery 在本机不提供它的浏览器上提供它。
  • @T.J.克劳德好点,我正要冲出这里的门。我已经更新了答案
  • 谢谢尼基!完美运行。感谢你的及时回复。 :)
  • 没问题。我早些时候有点着急,所以我会用 T.J. 解释为什么需要这样做来更新我的答案。此外,如果您对解决方案感到满意,最好将其标记为accepted answer
【解决方案2】:

您需要提供Event参数:

<script type="text/javascript">
$(document).ready(function(){
$("#rightcolumn .article .collapse").hide();
$("#rightcolumn h3 a").click(function(event){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue = false; 
};
$(this).parent().next().toggle(400);
});
});
</script>

这里已经回答了这个问题https://stackoverflow.com/a/17712808

请注意文档中的处理程序如何将此 eventObject 显示为传递给它的参数:http://api.jquery.com/click/

并注意 Event 对象如何具有 preventDefault 方法:http://api.jquery.com/category/events/event-object/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    相关资源
    最近更新 更多