我正在浏览一些 jQuery 教程,但我似乎无法找到这种混乱的原因。
<div id="container">
<a href="#">Click Me</a>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<script>
function doSomthing(){
aMessage = message;
console.log(this);
console.log(aMessage);
}
$('a').on('click', doSomthing)
</script>
当用户单击锚标记并运行 doSomthing 函数时,查看上面的代码。
但是我不明白为什么,如果将代码更改为以下内容(将括号添加到 doSomthing),doSomthing 函数会立即运行而无需单击锚标记。
$('a').on('click', doSomthing())
此外,如果我想在单击时运行 doSomthing 时传递参数,会发生什么。例如
<div id="container">
<a href="#">Click Me</a>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<script>
function doSomthing(message){
console.log(this);
console.log(message);
}
$('a').on('click', doSomthing('face bash'))
</script>
我通常期望的是,在我单击锚标记后,控制台将记录“this”和传递的字符串,但是 doSomthing 函数在页面加载后立即运行,而不是在单击锚标记时运行:S
您如何正常将参数传递给通过其他函数调用的函数:S?