2017-08-03 4 views
1

まあ私はクラス(.circle-checked)を追加するこれらのラベルImのonClickしかし、メディアのクエリが600pxより少ないならば、私はこのクラス(.circle-checked)しかし別のクラス(.circle-checked-blue)を追加したくありません。このコントロールをどうすればできますか?ここメディアクエリが600px未満の場合、jQueryで別のクラスを追加するにはどうすればよいですか?

は、ノウハウのために使用してコードイムです:

$(window).load(function() { 
    $('input').change(function(){ 
    var $this = $(this), $div = $('label.ui-button.ui-widget.ui-state-default[for=' + $this.attr('id') + ']'); 
     if($this.is(':checked')) 
     { 
      $div.addClass('circle-checked'); 
     } 
     else 
     { 
      $div.removeClass('circle-checked'); 
     } 
    }).change(); 
}); 

おかげ

+2

いいえ、あなたはむしろそれを望ましくありません。少なくともこれがスタイリング目的のためのものであれば。必要なのは、スタイルシート内で、メディアクエリを使用して異なるスクリーンサイズに異なる方法で使用する単一のクラスで要素をフォーマットするルールを作成することです。 – CBroe

+2

クラス名に_colors_をつけるのはひどいです。誰かがこれ以上青色ではなく、緑でなければならないと決めたら、プロジェクト全体でクラス名を切り替えるか、名前に "blue"と書かれたクラスを持つ必要がありますが、実際には緑色を使用します色として。あなたは現在のフォーマットではなく、_meaning_に基づいてクラスを選択する必要があります(_state_は現在のこの要素で、特定の色を付けたいのですか?)。 – CBroe

+0

画面の幅に基づいてスタイル/色のクラスを追加/削除しないでください。代わりにあなたのCSSで '@ media'を使用してください。' .circle {color:red; } @media(最大幅:600ピクセル){。円{色:青; }} ' –

答えて

0

あなたはこのためwindow.matchMediaを試すことができます。

$(window).load(function() { 
    $('input').change(function(){ 
     var $this = $(this), $div = $('label.ui-button.ui-widget.ui-state-default[for=' + $this.attr('id') + ']'); 
      var classname='circle-checked'; 
      if (window.matchMedia('(max-width: 600px)').matches) { 
       classname='circle-checked-blue'; 
      } 

      if($this.is(':checked')) 
      { 
       $div.addClass(classname); 
      } 
      else 
      { 
       $div.removeClass(classname); 
      } 
     }).change(); 
}); 
0

$(window).load(function() { 
    $('input').change(function(){ 
     var $this = $(this), $div = $('label.ui-button.ui-widget.ui-state-default[for=' + $this.attr('id') + ']'); 

     var issm = $(window).width()=<600; 
     var classChecked= issm?'circle-checked-blue':'circle-checked'; 


      if($this.is(':checked')) 
      { 
       $div.addClass(classChecked); 
      } 
      else 
      { 
       $div.removeClass(classChecked); 
      } 
     }).change(); 
}); 
0

がうまくどうもありがとうございましたが、それは動作しません...窓からの幅を取得するためにjqueryの幅を使用してみてください!

メディアクエリが<である場合、600はまだ.circle-checkedですか?

●はチェックし ●はチェックインブルー

デスクトップバージョン、onClickのラベルにその広告●は確認されたクラスとそれが正常に動作します: 私はより良い説明してみましょう、私は2クラスの持っていますモバイル版の場合は< 600と認識していますが、.circle-checkedは追加しませんが、.circle-checked-blueを追加してください!

ありがとう、

関連する問題