こんにちは私は私のページで次のHTMLを繰り返しています(明らかに、名前、for、id属性はインスタンスごとに変わります):
<div class="funkyCheckBox">
<label for="uniqueName"> Whatever Text </label>
<input type="checkbox" name="uniqueName" id="uniqueName" />
</div>
これがいくつかのCSSで行うことは、大きなボタンの外観を与えることです。入力は非表示になり、入力のチェックされた値に応じてdivにクラスを追加します。これには次のJavaScript/jQueryを使用します
$(".funkyCheckBox").live("click, tap", function(event){
$(this).toggleClass("funkyCheckBoxActive");
var nextCheckBox = $(this).find("input[type=checkbox]");
nextCheckBox.prop("checked", !nextCheckBox.prop("checked"));
});
これですべて問題ありませんでしたが、テスト中にラベルテキストをクリックしてもクラスが適用されず、入力の値が切り替えられないことに気付きました...したがって、次を追加しました...
$(".funkyCheckBox label").live("click, tap", function(event){
$(this).parent("div").toggleClass("funkyCheckBoxActive");
var nextCheckBox = $(this).next("input[type=checkbox]");
nextCheckBox.prop("checked", !nextCheckBox.prop("checked"));
});
ラベルテキストをクリックすると入力の値が変更されるため、これはすばらしいことですが、親DIVは「funkyCheckBoxActive」クラスを取得/切り替えていません。コールバック関数内で使用console.log($(this).parent("div"))
し、domオブジェクトの属性を出力している理由がわかりません。toggleClass
私が適用されない理由を誰かが知っていますか?