我有类似下面的内容。

$(document).ready(function() {
    $('#doReport').click(doReport);
});

function doReport(type) {
    if (type === undefined) {
        type = 'blah';
    }
    alert (type);
}

如果我从控制台运行doReport()或在JavaScript中单独运行而没有任何内容,它将返回“blah”(如预期的那样),并且显然,如果我调用doReport('wibble');,它将返回“wibble”,如您所愿。

但是,如果我通过单击ID为doReport的元素来运行它(利用我在.ready中设置的绑定(bind)),它将返回[object Object]

我不明白为什么会这样。

最佳答案

这是因为事件处理程序是通过作为第一个参数传递的对象(特别是event对象)触发的。

这就是您看到这样的语法的原因

$('#doReport').click(function(e) {

如果要不带任何参数调用函数,则需要创建一个包装函数来这样做:
$(document).ready(function() {
    $('#doReport').click(function() {
        doReport();
    });
});

10-08 06:21