Javascript 是e=event | | window.event;可接受IE8兼容性

Javascript 是e=event | | window.event;可接受IE8兼容性,javascript,javascript-events,Javascript,Javascript Events,当尝试使用preventDefault() 它似乎起作用了。然而(第四条评论)中的评论让我担心这可能是一种糟糕的方法。这是可以接受的,还是在某种程度上是不可接受的?注释的语言非常强,因此我想知道。首先,您分配单击处理程序的方式不正确: $("#submitBtn").on("click", pD(event)); 您正在调用pD()函数,并将其返回值传递给.on()方法。您只需传递对函数的引用: $("#submitBtn").on("click", pD); 其次,您使用的是jQuery,

当尝试使用
preventDefault()


它似乎起作用了。然而(第四条评论)中的评论让我担心这可能是一种糟糕的方法。这是可以接受的,还是在某种程度上是不可接受的?注释的语言非常强,因此我想知道。

首先,您分配单击处理程序的方式不正确:

$("#submitBtn").on("click", pD(event));
您正在调用
pD()
函数,并将其返回值传递给
.on()
方法。您只需传递对函数的引用:

$("#submitBtn").on("click", pD);

其次,您使用的是jQuery,因此不需要测试
e
参数并将其设置为
window.event
,因为jQuery为您处理这些兼容性问题。您可以使用
e.preventDefault()
知道jQuery只会让它发生。

如果它不是
e=e | | window.event
如果函数的第一行立即用另一个值覆盖它,那么函数参数
e
就没有意义了。使用karthikr的建议,使参数在有(真实)值时按原样使用。@nnnnnn好的,是的,输入错误。现在我在
if(e.preventDefault){
行中得到了error
error:objectrequired
。jQuery的
event
参数不是本机事件对象。它已经为您修复了。那么您为什么要再次尝试修复它呢?太棒了。非常感谢您。您能解释一下,是什么返回了导致
.on()
method to error?
pD(event)
正在返回
undefined
@RocketHazmat,当您刚刚传递对它的引用时,它会返回什么?这是否意味着它不需要返回值?对此有点困惑,谢谢。
.on()
方法希望在该参数中有一个函数引用,因此如果您给它一个函数引用,它会很高兴。您可以将
pD
放在不带括号的位置来传递对函数的引用-使用parens,它会立即调用您的函数,并将返回值(
未定义的
)传递给
。on()
。我没有仔细检查jQuery代码,但是()有一些可选参数,可以在函数引用之前添加。它必须测试其参数的类型,因此如果您提供的参数不是函数引用,它可能会混淆并给出您显示的错误。@nnnnnn非常高兴知道。非常感谢!
$("#submitBtn").on("click", pD);