2

这段代码(取自这篇文章)阻止我Error: 'null' is null or not an object在尝试使用 IE8 时收到错误消息()preventDefault()

$(document).ready(function () {
    $("#submitBtn").on("click", pD(event));
});

function pD(e) {
    e = event || window.event;
    if (e.preventDefault) {
        e.preventDefault();
    } else {
        e.returnValue = false;
    }
}

它似乎工作。然而,这篇文章中的评论(第四条评论)让我担心这可能是一个不好的方法。它是可以接受的,还是以某种方式不可接受的?评论的语言非常强大,所以这让我感到奇怪。

4

1 回答 1

10

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

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

您正在调用pD()函数并将其返回值传递给该.on()方法。您只需传递对该函数的引用:

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

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

于 2013-05-28T20:28:35.037 回答