neutral
、、の3つの異なるクラスを取得する要素がたくさんありmarkedV
ますmarkedX
。ユーザーがこれらの要素の1つをクリックすると、クラスは1回切り替わります:ニュートラル->マークV->マークX->ニュートラル。クリックするたびにクラスが切り替わり、関数が実行されます。
$(document).ready(function(){
$(".neutral").click(function markV(event) {
alert("Good!");
$(this).addClass("markedV").removeClass("neutral");
$(this).unbind("click");
$(this).click(markX(event));
});
$(".markedV").click(function markX(event) {
alert("Bad!");
$(this).addClass("markedX").removeClass("markedV");
$(this).unbind("click");
$(this).click(neutral(event));
});
$(".markedX").click(function neutral(event) {
alert("Ok!");
$(this).addClass("neutral").removeClass("markedX");
$(this).unbind("click");
$(this).click(markV(event));
});
});
しかし、明らかにこれは機能しません。私には3つの障害があると思います。
変更する要素を、実際に定義される前に、すでに定義されている関数に適切にバインドするにはどうすればよいですか?
新しくバインドされた関数にイベントを確実に渡す方法[markX(event)のように'event'を関数に送信しても達成されないと思います]
全体が繰り返しに見えますが、変更されるのはアラートアクションだけです(各関数の動作は異なりますが、必ずしもアラートである必要はありません)。これに対するよりエレガントな解決策はありますか?