2

options最初にすべてのクラスをクリアしてから、対応する文字でオプションにクラスを追加しようとしています。これが私の関数です:

function setAnswer(b, c){
      $('#'+b+' .option').removeClass("answer");
      $('#'+b+' .option'+c).addClass("answer");  
  }

とフォーム

 <div id="belh" class="options">
                <label>a.</label><input class="option optiona"><input onClick="setAnswer(this.parentnode.id, this.classname)" type="radio" class="a" name="answer">&nbsp;
                <label>b.</label><input class="option optionb"><input onClick="setAnswer(this.parentnode.id, this.classname)" type="radio" class="b" name="answer">
                <div class="clear"></div>
                <label>c.</label><input class="option optionc"><input onClick="setAnswer(this.parentnode.id, this.classname)" type="radio" class="c" name="answer">&nbsp;
                <label>d.</label><input class="option optiond"><input onClick="setAnswer(this.parentnode.id, this.classname)" type="radio" class="d" name="answer">
                </div>

divのIDはbelh動的に変化するため、関数のthis.parentnode.id変数に渡してこれを実行できます。b

 $('#'+b+' .option').removeClass("answer");

ここで使用する文字(a、b、c、d)を取得できるように、渡す
すべてのオプション要素からクラスを削除します。this.classnamec

$('#'+b+' .option'+c).addClass("answer");

そのため、クラスのあるラジオボックスをクリックすると、div内のクラスのcあるすべてのフィールドでクラスの回答が失われます(クラスがある場合)。次に、クラスのあるフィールドにクラスが追加されます。(なぜなら:) 。何らかの理由で私の機能が機能していません。変数を間違った方法で渡していると思います。optionbelhoptioncanswer$('#'+b+' .option'+c).addClass("answer");

4

2 に答える 2

3

コーディングする必要がthis.classNameありthis.parentNode.idます。また、jQuerychangeイベントメソッドとprev、クリックされた入力の前の兄弟を選択するためのメソッドを使用することもできます。

$('#belh input[name=answer]').change(function(){
    $('input.option').removeClass('answer');
    $(this).prev().addClass('answer')
})
于 2012-10-07T20:32:53.960 に答える
1

クラス名を切り替えてみましたか?http://api.jquery.com/toggleClass/

于 2012-10-07T22:35:01.677 に答える