我的侧边栏中有一个div元素(id = ecover)>点击它会显示另一个div(id = ebook_form)。这个jQuery代码如下。因为涉及到href链接,所以在显示隐藏div的代码之后使用return false。
它过去工作得很好,但现在由于某种原因,它有时会起作用,有时“返回假”似乎不起作用。
jQuery('#ecover').click(function(){
jQuery("#ebook_form").slideToggle('fast');
var ecover_vertical_position = jQuery('#ecover').offset();
ecover_vertical_position = ecover_vertical_position.top;
jQuery('html, body').animate({ scrollTop: ecover_vertical_position }, 500, 'easeInOutExpo');
return false;
});
答案 0 :(得分:0)
return false
是阻止默认操作的不好方法。这有三个主要原因:
event.preventDefault()
。event.stopPropagation()
。但没有理由认为两者应该永远在一起。return false
,因此将执行默认操作。如果我们将event.preventDefault()
放在函数的顶部,则不会发生这种情况。这是特别糟糕的,因为在这种情况下,默认行为涉及更改页面,因此错误控制台被清除,您无法看到发生了什么错误。因此,例如,此代码将始终阻止默认行为:
jQuery('#ecover').click(function(event){
event.preventDefault();
jQuery("#ebook_form").slideToggle('fast');
var ecover_vertical_position = jQuery('#ecover').offset();
ecover_vertical_position = ecover_vertical_position.top;
jQuery('html, body').animate({ scrollTop: ecover_vertical_position }, 500, 'easeInOutExpo');
});
这不能解决实际问题,即您的代码抛出错误。我的猜测是offset
函数出了问题,所以对象没有top
属性,但是我无法弄清楚如果事件处理程序被触发,它会如何发生element的click
事件。但无论如何,一旦默认行为停止,您就可以使用浏览器控制台确定错误。