Javascript命名,自我调用功能

时间:2011-01-07 14:19:03

标签: javascript jquery

嘿伙计们,我有几段代码似乎可以被浓缩但我不确定如何。

我的代码就是这个

var checkForUnitReferred = function () {
    $("#LeadForm").toggle($("#Claim_UnitReferredNoNull").is(":checked"));
};
checkForUnitReferred();

$("#Claim_UnitReferredNoNull").change(function() {
    checkForUnitReferred();        
});

它基本上检查是否选中了复选框并显示表单,否则会隐藏它。我宁愿拥有的是这样的东西

var checkForUnitReferred = (function() {
    $("#LeadForm").toggle($("#Claim_UnitReferredNoNull").is(":checked"));
})();

$("#Claim_UnitReferredNoNull").change(function() {
    checkForUnitReferred();        
});

我知道这不行,但我认为这样的事情会更清晰。有人知道如何实现这个目标吗?

2 个答案:

答案 0 :(得分:5)

这个怎么样:

var checkForUnitReferred;

(checkForUnitReferred = function() {
    $("#LeadForm").toggle($("#Claim_UnitReferredNoNull").is(":checked"));
})();

$("#Claim_UnitReferredNoNull").change(function() {
    checkForUnitReferred();        
});

这是可能的,因为赋值(=)运算符返回值集。

答案 1 :(得分:2)

直接命名函数,而不是创建一个匿名函数来赋值给变量。您也可以将此函数指定为.change()处理程序,而无需额外的包装函数:

(function checkForUnitReferred() {
    $("#LeadForm").toggle($("#Claim_UnitReferredNoNull").is(":checked"));
})();

$("#Claim_UnitReferredNoNull").change(checkForUnitReferred);