我不确定原因,但出于某种原因event.preventDefault()
来电并不适用于Firefox。我正在使用它阻止点击a
链接,将您重定向到href
,而是运行点击功能。标记如下:
jQuery的:
$('.sub-list-click a').click(function() {
event.preventDefault();
var sub = $(this).parent("li").next(".sub, .homepage-sub");
if (sub.css('display') == 'none') {
$(".sub, .homepage-sub").slideUp();
$(".sub, .homepage-sub").children("li").animate({
opacity: "0"
}, 10);
setTimeout(function() {
sub.slideDown();
}, 200);
setTimeout(function() {
sub.children("li").animate({
opacity: "1"
}, 200);
}, 500);
} else {
sub.slideUp();
}
return false;
});
它适用于我测试的所有其他浏览器,只是Firefox似乎有一些问题。
答案 0 :(得分:4)
您需要在Click函数处理程序中添加event作为参数,如下所示:
$(document).ready(function () {
$('.sub-list-click a').click(function (event) {
event.preventDefault();
var sub = $(this).parent("li").next(".sub, .homepage-sub");
if (sub.css('display') == 'none') {
$(".sub, .homepage-sub").slideUp();
$(".sub, .homepage-sub").children("li").animate({
opacity: "0"
}, 10);
setTimeout(function () {
sub.slideDown();
}, 200);
setTimeout(function () {
sub.children("li").animate({
opacity: "1"
}, 200);
}, 500);
} else {
sub.slideUp();
}
});
});
另请注意,此示例包含在document.ready事件中(您可能已经执行此操作,但由于它不明显,我会将其添加为注释)
这里的“工作”示例(阻止链接的后续内容,而不是任何动画内容):
http://fiddle.jshell.net/79uuqmho/1/
修改/更新强>
它在Firefox中不起作用的原因是因为使用event.something会为您提供一个未定义的事件错误,该错误会停止脚本的执行。另一方面,Chrome不会给出异常(可能是由于事件在窗口对象的某处定义)并允许脚本执行向下返回false; (与{event.preventDefault(); / * AND * / event.stopPropagation();}
答案 1 :(得分:0)
使用事件方法参数中的任何对象,即:
$('.sub-list-click a').click(function(e) {
e.preventDefault();
// other code
}