我有类似下面的内容。
$(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();
});
});