event.preventDefault()在Chrome中工作,但在Firefox / IE中不起作用
event.preventDefault() working in Chrome, but not in Firefox / IE
我知道已经有很多关于这个主题的问题,但是我已经读了很多,仍然不能让我的脚本工作…
我有一个非常基本的幻灯片,可以在这里看到:www.screations.net/wm(有3个幻灯片,我有同样的问题在所有3个)
下面是我用于导航的代码:<a href="#"><img src="images/arrow_right.png" class="nextSlide" onclick="nextSlide();"/></a>
<a href="#"><img src="images/arrow_left.png" class="prevSlide" onclick="prevSlide();"/></a>
和jQuery(简化):
function nextSlide()
{
$('.slide').eq(0).fadeIn(fadeSpeed);
event.preventDefault();
}
function prevSlide()
{
$('.slide').eq(0).fadeOut(fadeSpeed);
event.preventDefault();
}
现在这在Chrome上工作得很好,但在Firefox/IE上,当脚本仍然工作时,它会重新加载页面。请问我该如何解决这个问题?:/
谢谢
看函数体,有两个明显的问题
function nextSlide(){
$('.slide').eq(0).fadeIn(fadeSpeed);
event.preventDefault();
}
你没有传递event
,因此当调用这个函数时,JS假设event
来自全局作用域。其次,您通常希望在开始执行任何操作之前阻止默认操作,例如:
function nextSlide(event) {
event.preventDefault(); // <- That should come first
$('.slide').eq(0).fadeIn(fadeSpeed);
}
最后,当你已经包含jquery时,使用内联JavaScript没有太大意义。
所以,我把你的东西重写为:
$("img.nextSlide").click(function(event){
event.preventDefault();
$('.slide').eq(0).fadeIn(fadeSpeed);
});
$("img.prevSlide").click(function(event){
event.preventDefault();
$('.slide').eq(0).fadeOut(fadeSpeed);
});
如果你不把事件传递给函数,你就不能指望它被阻止。
更改链接如下:
onclick="nextSlide(event);"
然后,修改函数如下:
function nextSlide(event){ // <-- Accept the event parameter here...
// Move this first in the function....
event.preventDefault();
$('.slide').eq(0).fadeIn(fadeSpeed);
}
运行时需要将事件传递给函数。
您通常在执行其他操作之前运行event.preventDefault(),但这不是100%必要的。
$(function(){
$("img.nextSlide").on("click",function(e){
e.preventDefault();
$('.slide').eq(0).fadeIn(fadeSpeed);
})
$("img.prevSlide").on("click",function(e){
e.preventDefault();
$('.slide').eq(0).fadeOut(fadeSpeed);
})
})
相关文章:
- 滚动在Chrome中有效,但在Firefox或IE中无效
- jQuery自动完成在Firefox中运行良好,但在Chrome中则不然
- 为什么这个按钮在IE中有效,但在Firefox中无效
- HTML选择,在DOM中选择了正确的选项,但在firefox中显示了错误的项目
- Ajax调用在InternetExplorer中冻结UI,但在firefox中运行良好
- Javascript下载在firefox中停止,但在Chrome中有效
- 以下颜色更改功能在IE9和Firefox中运行良好,但在早期的IE或Chrome中则不然
- JavaScript函数在Safari中有效,但在Firefox中找不到
- Javascript'元素'在ie中未定义,但在chrome和firefox中运行良好
- javascript代码,用于删除firefox中的空白,但在IE和chrome中无法正常工作
- jQuery代码在Firefox中工作,但在IE中失败
- 在Firefox中工作正常,但在Chrome中不能
- Javascript键码在Firefox中不起作用,但在chrome中运行良好
- 输入类型的图像在Internet Explorer中不起作用,但在Chrome和Firefox中起作用
- 聚合物准备在IE11上启动,但在Firefox或Chrome上不启动
- 使用量角器双击在chrome中效果良好,但在firefox中不起作用
- Jquery.hide()和.show()在firefox上运行速度较慢,但在chrome上运行良好
- 禁用字段在IE中有效,但在Firefox中无效
- 在getJSON之后构建HTML在Safari中有效,但在Chrome或Firefox中无效
- 为什么对img标记的前向引用在Chrome上失败,但在FireFox和IE上有效