3
function showHideSoldTo() {
    if ($("#radio-text-sold-to").prop("checked")) {
        $("#select-sold-to").hide();
        $("#text-sold-to").show();
    } else if ($("#radio-select-sold-to").prop("checked")) {
        $("#text-sold-to").hide();
        $("#select-sold-to").show();
    }
}

$("#radio-text-sold-to").click(showHideSoldTo());
$("#radio-select-sold-to").click(showHideSoldTo());

これらはすべて、ドキュメント対応のラッパー内にあります。

4

3 に答える 3

7

クリック呼び出しの関数名から () を削除します。そう..

$("#radio-text-sold-to").click(showHideSoldTo);
...
于 2013-10-28T19:46:57.263 に答える
2

クリック呼び出しの関数名から () を削除します

のようにしてみてください

$("#radio-text-sold-to").click(showHideSoldTo);
$("#radio-select-sold-to").click(showHideSoldTo);
于 2013-10-28T19:47:44.447 に答える
1

問題は.click()、関数値であるはずのメソッドに渡す値にありますが、代わりに関数を呼び出しており、その結果、その関数の戻り値 (に等しいundefined)を渡しています。

()修正は簡単です。これらの 2 行の を削除する必要があります。

$("#radio-text-sold-to").click(showHideSoldTo());
$("#radio-select-sold-to").click(showHideSoldTo());

だから彼らはなる

$("#radio-text-sold-to").click(showHideSoldTo);
$("#radio-select-sold-to").click(showHideSoldTo);

JavaScript では、任意の識別子が値を識別します。その値は、整数などの単純な値である場合もあれば、より複雑なオブジェクトである場合もあり、コールバックまたはイベント ハンドラーとして渡す値の場合と同様に、関数値である場合もあります。

これら 2 行のコードは基本的に同じです

function myFoo() {}
var myFoo = function() {}

後者では、右側が左側に割り当てられていることが明示されています。つまり、関数値が識別子に割り当てられます。

于 2013-10-28T19:52:15.717 に答える