0

一連のラジオ ボタンとチェックボックスでジェネリック クラス (.is-checked のようなもの) を追加/削除する必要があります。ここに私が持っているコードがあります:

$(function () {
  $('input[type="checkbox"], input[type="radio"]').each(function () {
    $(this).on('click', function () {
      $(this).parent().wrap('<div>').unwrap();  
        // works great for checkboxes, but not for radios
        if ($(this).prop('checked')) {
          $(this).addClass('is-checked');
        } else {
          $(this).removeClass('is-checked');
        }
    })
  })
})

これはチェックボックスでは完全に機能しますが、ラジオ ボタンに追加されるクラスでは決して削除されません。考え?アイデア?

編集 ':checked' 疑似セレクターがサポートされていないため、このスクリプトは条件付きで IE8 に読み込まれることを忘れていました。機能全体が IE8 以外のすべてで完全に正常に動作するため、これは IE8 の松葉杖であり、貧弱なユーザーはそれを処理することに行き詰まっています。最後に、「is-checked」クラスは、:checked セレクターと同じ CSS をトリガーします。

4

3 に答える 3

1

ネイティブ プロパティを使用してみてください:

$('input[type="checkbox"], input[type="radio"]').on('click', function () {
      $(this).parent().wrap('<div>').unwrap(); 
      if (this.checked) {
          $(this).addClass('is-checked');
      } else {
          $(this).removeClass('is-checked');
      }    
});
于 2013-07-29T18:00:51.790 に答える