这似乎适用于几乎所有浏览器,除了 IE8(可能还有 IE7,但我还没有尝试过),我不知道为什么。
$('body')
.on('click', '.toggle', function(e){
$(this).toggleClass('active');
e.preventDefault();
e.stopPropagation();
});
我注意到,当我单击分类为 的链接时toggle
,浏览器会转到页面顶部,尽管e.preventDefault()
. 在调查问题时,我看到了返回 false 或 setting 等解决方案event.returnValue = false
。我已经通过首先测试e.preventDefault()
然后在不满足条件时执行替代方法来尝试这两种方法。
设置返回值:
$('body')
.on('click', '.toggle', function(e){
if (e.preventDefault()) {
e.preventDefault();
} else {
e.returnValue = false;
}
$(this).toggleClass('active');
});
我也尝试过设置returnValue
全局事件对象,而不是e
像一篇文章中建议的那样传递到绑定函数中。
我的尝试返回错误:
$('body')
.on('click', '.toggle', function(e){
if (e.preventDefault()) {
e.preventDefault();
}
$(this).toggleClass('active');
return false;
});
尽管有所有这些不同的尝试,IE8 仍采用链接的默认操作,而不是切换类。我在这里做错了什么?我正在使用 jQuery 1.10.2。
更新:找到问题的根源。谢谢大家的帮助。我有条件地包含了一些非 IE 的脚本元素,这个脚本就是其中之一。返回 false 现在对我有用。非常感谢你把我推向正确的方向!