在尝试命名我的js / jquery代码时,我遇到了以下问题。
基本上,我曾经在每个html / php文件中编写所有JS代码,我想将其抽象为带有命名空间的单个js文件。
所以,在我的html文件中,我有:
<script type="text/javascript">
$(document).ready(productActions.init());
</script>
在我的js文件中,我有:
var productActions = {
init: function() {
alert('initialsed');
$('#field_id').change(function() {
alert('ok!');
});
}
productActions init函数肯定在运行,因为我得到了第一个警报(初始化)。但是,似乎没有任何jquery绑定函数可以做任何事情。单步执行init函数会显示上面的更改函数正在注册,但实际上更改字段中的值绝对不会。
我错过了一些明显的东西吗?
答案 0 :(得分:5)
$(document).ready(productActions.init());
此代码立即调用init()
并将其返回值传递给ready(...)
。 (就像任何其他函数调用一样)
相反,你可以写
$(document).ready(productActions.init);
传递函数本身。然而,这会用错误的this
来称呼它;如果您需要this
,请写
$(document).ready(function() { productActions.init() });