自调用函数也可以调用

时间:2012-03-29 20:17:53

标签: javascript

以下代码有效,但我想在声明它时使用自调用函数语法,而不是在最后一行显式调用它:

var ShowMe = function() {
    if ($('input:checkbox:checked').length) {
        $('#Save').fadeIn('slow');
    } else {
        $('#Save').hide();
    }
};
$('input:checkbox').on('click',ShowMe);
ShowMe();

2 个答案:

答案 0 :(得分:2)

您无法在表达式中声明var,但您可以将其定义放在一个中:

var ShowMe; (ShowMe = function() {
    if ($('input:checkbox:checked').length) {
        $('#Save').fadeIn('slow');
    } else {
        $('#Save').hide();
    }
})();

$('input:checkbox').on('click',ShowMe);

答案 1 :(得分:2)

请改为尝试:

var ShowMe = function() {
    if ($(this).length) { // `this` is the input that was clicked
        $('#Save').fadeIn('slow');
    } else {
        $('#Save').hide();
    }
};
$('input:checkbox').on('click', ShowMe).trigger('click');

根据以下评论进行更新:

$('#Save').hide();
$('input:checkbox').on('click', function() {
    if(this.checked) { //check if this is checked
         $('#Save').show('slow');
    }
    else if(!($('input[type="checkbox"]:checked').length)) { 
            //check to see if anything else was checked 
         $('#Save').hide();
    }
});