Jquery和javascript命名空间

时间:2012-01-03 01:43:52

标签: javascript jquery

在尝试命名我的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函数会显示上面的更改函数正在注册,但实际上更改字段中的值绝对不会。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:5)

$(document).ready(productActions.init());

此代码立即调用init() 并将其返回值传递给ready(...)。 (就像任何其他函数调用一样)

相反,你可以写

$(document).ready(productActions.init);

传递函数本身。然而,这会用错误的this来称呼它;如果您需要this,请写

$(document).ready(function() { productActions.init() });