javascript - 为什么 jQuery 的 .change() 需要包装成函数?

标签 javascript jquery html

为什么这在 jQuery 中有效:

$('#selCars').change(function(){
     alert( "I have changed!" );
}) 

但不是这个:

$('#selCars').change(alert( "I have changed!" ) ); 

最佳答案

您将函数引用传递给.change()。您的第二个示例只有代码,而不是函数引用。

您的第一个示例之所以有效,是因为它传递了所需的函数引用。

需要函数引用,因为这是稍后将调用的回调。立即执行的 .change() 函数需要将回调引用保存到它自己的变量中,然后在更改事件实际发生时调用它。为此,它需要一个稍后调用的函数,而不是一段原始代码。

并且,另一个答案是因为 .change() 被编写为需要函数引用。这就是规范和编写它的开发人员的设计方式。如果你想让它发挥作用,你就必须遵守他们的规则。

关于javascript - 为什么 jQuery 的 .change() 需要包装成函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7736244/

相关文章:

javascript - 在 contenteditable 中编辑光标未显示在 Chrome 上

jquery - slideUp slideDown 不起作用

javascript - 仅当鼠标悬停在其上时显示 div

javascript - 想添加下拉列表

javascript - 从类方法访问 javascript 中的类属性

javascript - 如何从Chrome扩展程序监听JavaScript中的卸载事件?

javascript - 是否可以让浏览器仅在输入密码时退出全屏模式?

javascript - Google chrome 中的奇怪行为(提交表单后,它会转到页面底部)

javascript - 我可以在 ng-repeat 中设置变量吗?

html - 在 IE6 中使用 ul 和 li 有问题