1

選択したラジオ入力にクラスを追加し、同じタイプの別のラジオが選択されたときにそのクラスを削除しようとしています

ラジオボタンにはクラス「radio_button」がありますが、以下のコードでクラスを変更できません。

  jQuery(".radio_button").livequery('click',function() {  

      $('input.radio_button :radio').focus(updateSelectedStyle);
      $('input.radio_button :radio').blur(updateSelectedStyle);
      $('input.radio_button :radio').change(updateSelectedStyle);
  }
  function updateSelectedStyle() {
      $('input.radio_button :radio').removeClass('focused');
      $('input.radio_button :radio:checked').addClass('focused');
  }
4

4 に答える 4

2

また、jQuery の連鎖可能性を利用して、実行している作業の量を減らすこともできます。(これらのボタンを何度も再検索するのではなく) 次のようなもの:

  jQuery(".radio_button").livequery('click',function() {  
    $('input.radio_button:radio')
      .focus(updateSelectedStyle)
      .blur(updateSelectedStyle)
      .change(updateSelectedStyle);
  });
  function updateSelectedStyle() {
    $('input.radio_button:radio')
      .removeClass('focused')
      .filter(':checked').addClass('focused');
  }
于 2009-01-07T21:12:52.007 に答える
2

Tre の問題は、セレクターに余分なスペースが 1 つあるために発生します。

それ以外の:

$('input.radio_button :radio')

あなたが書きたかった:

$('input.radio_button:radio')
于 2009-01-07T19:34:27.183 に答える
1
  • 各ラジオ ボタンに一意の ID を付与する
  • クリックでIDを渡す
  • 同じクラスを持つすべてのラジオ ボタンの「フォーカスされた」クラス名を削除します
  • 渡した ID を使用して、「focused」クラスをラジオ ボタンに追加します。
于 2009-01-07T19:12:02.627 に答える
0

まず、余分なスペースに関する Rene Saarsoo の回答に同意します。

第二に、ラジオボタンのラベルにもスタイルを適用しようとしていますか? おそらく、ボタンとラベルを何らかの形でまとめたいと思うでしょう。例えば:

<span class="radiowrapper"><input type="radio" name="system" value="1" class="radio_button"> 1</span>
<br>
<span class="radiowrapper"><input type="radio" name="system" value="2" class="radio_button"> 2</span>

次に、livequery 呼び出しの余分な呼び出しを取り除き、コードを updateSelectedStyle()関数から livequery 呼び出しに移動します (それ以外の場合は IE の問題に気付きました)。

   jQuery(".radio_button").livequery('click',function() {
        $('input.radio_button:radio').parent(".radiowrapper").removeClass('focused');
        $('input.radio_button:radio:checked').parent(".radiowrapper").addClass('focused');
   });
于 2009-01-07T20:18:28.560 に答える