私が必要とするように、両方の私はどこにでも探していないことだし、私はラジオボタンのリスナーを作成する方法や、それがready
にチェックしていますかどうかを確認する方法を見つけることができますが、決して:変更の際のラジオボタンと、ドキュメントがjQueryでいつ用意されているかを聞きますか?
私は、フォーム内のオブジェクトを編集する場合、依存ラジオ・グループで選択されたものについては、div
が表示または非表示になっている必要があります。ユーザーがそれを変更すると、再び表示されるか消えます。
私はdiv
にサーバー側で隠さクラスを追加することによって、正しい状態を初期化することができたが、その後、私はAJAXを使用していないので、PHPとjQueryの中のすべての私の依存関係をプログラムしなければならない - それはしていません私には意味をなさない
私はベストプラクティスのためにjQueryウェブサイトを見ました - それはthisのようでした。
しかし私は私のケースでそれをどうすればいいのか分かりません。$(this)
は動作していないように見えます。私はイベント外の関数を参照しているからですか?
var fieldHider = function (turnOn, toggleFields, fadeIn) {
var visibilityAction;
if (turnOn) {
visibilityAction = (fadeIn) ? "fadeIn" : "show";
} else {
visibilityAction = (fadeIn) ? "fadeOut" : "hide";
}
$(toggleFields)[visibilityAction]();
};
var translatorRadioChanged = function (event) {
var isOn = ($(this).val() === '1');
var fading = (event) ? true : false;
fieldHider(isOn,'label[for="translator"]', fading);
};
var translatorRadioNames = "translatorNeeded";
$(function() {
$("input[name='" + translatorRadioNames + "']").change(translatorRadioChanged);
translatorRadioChanged();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<label for="translatorNeeded">
Translator needed
<input type="radio" value="1" name="translatorNeeded">
Yes
<input type="radio" value="0" checked="checked" name="translatorNeeded">
No -> Div below should be hidden!
</label>
<br>
<br>
<label for="translator">
<label class="lcapp-label clearfix" for="translator">
Translator Name + Language
<input type="text" name="name" size="5">
<input type="text" name="lang" size="5">
</label>
</label>
私はあなたの答えを好むが、私はちょうど私があなたの変化に伴って、このコードを実行するとき、それは 'translatorRadioChanged'を発射することに気づきました最初はtrue、falseの順に2回機能します。それについては何ですか? –
は、コレクション内の各要素に対して発生します。私は本当にハンドラの中にあるものを厳密に分析しなかった...もっと文脈に焦点を合わせた – charlietfl
別の方法は '.change(translatorRadioChanged).filter( ':checked')。change();' – charlietfl