是否可以绑定到Click事件而不使用匿名函数 - 我只想调用一个命名函数

时间:2011-10-19 23:30:19

标签: javascript jquery

我有以下代码。绑定到click事件的第一次尝试不起作用。第二种方式。第一个在Page_Load期间显示警报“CheckBox1”。第二个在适当的时间 - 点击期间显示警告“CheckBox4”。

$(document).ready(function () {
    $(document.getElementById(checkBox1ID)).click( SetCheckBox1State(this.checked) );
    $(document.getElementById(checkBox4ID)).click(function () { SetCheckBox4State(this.checked) });
});

    function SetCheckBox1State(checked) {
    alert("CheckBox2");
    var radNumericTextBox1 = $find(radNumericTextBox1ID);
    var wrapperElement = $get(radNumericTextBox1._wrapperElementID);
    var label = $(wrapperElemenet.getElementsByTagName("label")[0]);

    if (checked) {
        radNumericTextBox1.enable();
        label.addClass("LabelEnabled");
        label.removeClass("LabelDisabled");
    }
    else {
        radNumericTextBox1.disable();
        label.addClass("LabelDisabled");
        label.removeClass("LabelEnabled");
    }
}

function SetCheckBox4State(checked) {
    alert("CheckBox4");
    var radNumericTextBox2 = $find(radNumericTextBox2ID);
    var wrapperElement = $get(radNumericTextBox2._wrapperElementID);
    var label = $(wrapperElemenet.getElementsByTagName("label")[0]);

    if (checked) {
        radNumericTextBox2.enable();
        label.addClass("LabelEnabled");
        label.removeClass("LabelDisabled");
    }
    else {
        radNumericTextBox2.disable();
        label.addClass("LabelDisabled");
        label.removeClass("LabelEnabled");
    }
}

我做错了什么吗?我宁愿不使用匿名函数......但也许这就是事情的运作方式?

1 个答案:

答案 0 :(得分:4)

此代码:

 .click( SetCheckBox1State(this.checked) );

.click()函数指定为此函数的输出SetCheckBox1State(this.checked)

您必须摆脱参数(使其成为内部参数)并传递函数名称:

.click( SetCheckBox1State );