JavaScript自调用函数闭包无法正常工作

时间:2014-07-29 13:17:28

标签: javascript jquery

免责声明:我正在尝试使用闭包,因为我被告知这是一个很好的做法(我明白 - 没有变量可以用于其他功能等)但我不是100%理解我是什么这样做! 99%的时间他们工作得很好。

我有以下功能:

(function(){
    $("#job-titles-list a").click(function(e){
        e.preventDefault();
        return false;
    });
});

但是当我点击任何链接时,我被带到他们的href。如果我将功能更改为:

// (function(){
    $("#job-titles-list a").click(function(e){
        e.preventDefault();
        return false;
    });
// });

我的问题是我怎样才能使闭包工作/我不应该使用闭包来做我正在做的事情?

(我知道我不需要return falsee.preventDefault(),但是当它不能正常工作时我会尝试一些事情。

2 个答案:

答案 0 :(得分:3)

您定义了一个函数表达式,但您没有调用它。添加括号:

(function(){
    $("#job-titles-list a").click(function(e){
        e.preventDefault();
        return false;
    });
})();

请注意,如果您在IIFE内没有更多代码,那么由于您没有添加任何变量,这样做完全没用。

答案 1 :(得分:1)

您定义了机箱,但尚未调用它:

(function(){
    $("#job-titles-list a").click(function(e){
        e.preventDefault();
        return false;
    });
})(); // < -- Note the () here.