我有一些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中运行?
答案 0 :(得分:16)
您缺少函数中的事件声明。另外作为惯例,我看到大多数使用evt作为变量名的例子。
$("#rightcolumn h3 a").click(function(evt)
{
evt.preventDefault();
$(this).parent().next().toggle(400);
}
T.J.的评论关于将evt包含在函数()中的克劳德
的更多解释您需要将参数声明为click处理程序(事件不是全局的,除了在IE和浏览器上向IE特定网站投掷骨骼。)请注意,您不需要(或想要)测试的preventDefault。 jQuery在没有本机提供它的浏览器上提供它
答案 1 :(得分:1)
您需要提供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/