2016-03-07 42 views
0

我有一个简单的点击功能,可以在IE和Chrome上正常工作,但在Firefox上无法正常工作。起初,它一直工作,直到我把它放在doc.ready函数中。这里这个例子中工作,但在Firefox它只显示文档准备好警报,点击时clickworking警报,但不得不做event.target.idevent.target.id不能在firefox上工作

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'></script> 
 
<p class="clickbtn" id="someclickbtn"> Click here </p> 
 
<script type='text/javascript'> 
 
$(document).ready(function(){ 
 
alert("doc ready"); 
 
$(".clickbtn").click(function() { 
 
\t alert("clickworking"); 
 
\t alert(event.target.id); 
 
\t var targetid = "#" + event.target.id + "scroll"; 
 
\t alert(targetid); 
 
\t $('html, body').animate({ 
 
     scrollTop: $(targetid).offset().top 
 
    }, 1000); 
 
}) 
 
}); 
 
</script>

任何帮助都没有警告或行动不胜感激,谢谢提前

+0

传递一个'event'到'函数()'? – 2016-03-07 12:20:14

+1

如果这是在铬和IE工作,也许该浏览器有问题。如果一个变量(在这种情况下为'event')没有被定义,那么就需要抛出一个错误。如果没有,浏览器有问题。 Firefox再次正常工作:) –

+0

[为什么FF说window.event是未定义的? (调用函数添加事件监听器)](http://stackoverflow.com/questions/9813445/why-ff-says-that-window-event-is-undefined-call-function-with-added-event-list) – Kaiido

回答

4

在Firefox中,你必须接受event对象在事件处理程序,

$(".clickbtn").click(function(event) { 

Chrome将不会期望它被收到。但在事件处理程序中接收它总是很好的。

+1

是的..没有参数,它会在'-moz-'...'this'中失败,我可以使用.. – Rayon

+1

很酷,非常感谢你的工作马上,没有意识到你只是不得不在他们的 – Alex

+0

中添加'event'这不仅是“好的”,它是根据规范,“window.event”不在标准轨道上,它是一个IE专有属性:https://developer.mozilla.org/en-US /文档/网络/ API /窗/事件 – Kaiido

1

您需要添加event对象作为函数的参数。

这是该行:

$(".clickbtn").click(function(event) { 

这里是片段:

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'></script> 
 
<p class="clickbtn" id="someclickbtn"> Click here </p> 
 
<script type='text/javascript'> 
 
$(document).ready(function(){ 
 
alert("doc ready"); 
 
$(".clickbtn").click(function(event) { 
 
\t alert("clickworking"); 
 
\t alert(event.target.id); 
 
\t var targetid = "#" + event.target.id + "scroll"; 
 
\t alert(targetid); 
 
\t $('html, body').animate({ 
 
     scrollTop: $(targetid).offset().top 
 
    }, 1000); 
 
}) 
 
}); 
 
</script>