jQuery:event.preventdefault 不适用于 Firefox(Mac 和 PC)

发布于 2024-11-05 03:58:16 字数 539 浏览 5 评论 0原文

我有一段 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 中运行?

I have this bit of jQuery toggling a paragraph after an H3 link. It works in IE and Chrome on PC and Safari and Chrome on Mac. On Firefox on both platforms, clicking the link does nothing at all?

<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> 

If I disable the event.preventDefault(); section it works in Firefox, but of course then I get the page jumping to the top which I don't want. What can I do to get it working in Firefox?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无力看清 2024-11-12 03:58:16

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

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

TJ Crowder 关于在 function() 中包含 evt 的评论

您需要向点击处理程序声明参数(事件不是全局的,除了 IE 和向 IE 特定网站抛出骨头的浏览器之外。)并注意,您不需要(或想要)测试防止默认。 jQuery 在本身不提供它的浏览器上提供它

有关 jQuery 事件的更多说明

You are missing the event declaration from your function. Also as a convention I see most examples using evt as the variable name.

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

Comment from T.J. Crowder as to including the evt in function()

You need to declare the parameter to the click handler (event is not a global except on IE and browsers that throw a bone to IE-specific websites.) And note that you don't need (or want) the test for preventDefault. jQuery supplies it on browsers that don't provide it natively

More explanation on jQuery events

青衫负雪 2024-11-12 03:58:16

您需要提供 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/

You need to provide the Event parameter:

<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>

This question already been answered here https://stackoverflow.com/a/17712808

Note how the handler in the docs show this eventObject as the parameter passed to it: http://api.jquery.com/click/

And note how the Event object has the preventDefault method: http://api.jquery.com/category/events/event-object/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文