2011-09-11 5 views
5

私はそうであれば、特定の操作(分類)が進行中であるか否かに基づいて要素の可視性を切り替える必要がある場合を持って、目に見えるだ他、隠れています。jqueryのshow/hideによるインラインスタイルの追加を防止しますか?

は今、私はこのようになりますCSSあります

.isCategorizing .category.all { 
    display:none; 
} 

すなわち、それは親(s)はクラスに持っていた場合、クラス(複数可).category.allでそのdiv要素が隠されるべきであることを意味.isCategorizing

今jqueryので、私は、インラインスタイルを.cssファイルにCSSに優先を取ってHTMLに追加され.category.all要素の可視性を切り替える場合は!したがって、たとえ上記が真であっても、インラインスタイルからの可視性の値が優先され、その要素は隠されていないようです。私のCSSは、それが非表示にする必要があるのに対し、...

見えるjqueryのアドオンのstyle=display:list-item;のdivにあることに私は純粋なjQueryのでこれを扱うことができるが、あまりにも多くの州やチェックは、それはように、その特定の方法で動作する必要があることを確認するためにありますその状態が存在していてもその状態に戻すかどうかを "記憶"するブール値フラグを維持するだけである。これに対処する最善の方法... CSSのアプローチは、簡単かつ非常にきれいですが、インラインスタイルは、刺激性のビットです...

?私は別のクラス.hideを作成しようとしたとjQueryを使っていることを切り替えます。何らかの理由で、私の要素の位置を決めるのにうまくいくと思われます。私はそれを使って遊んでいるが、この問題に対するきれいな解決策を見つけることはできないようだ。何かアドバイス??

更新:ここ

は、対応するCSSです:

.category{ 
     position:relative; 
     padding:1px; 
     margin:2px 0 5px 0; 
     clear:both; 
     font-family:arial, sans-serif; 
     font-size: 14px; 
     display:inline-block; 
     width:inherit; 
    } 


.category.all { 
     display:none; 
     width:200px; 
     text-align: center; 
     padding:3px; 
     border:2px solid transparent; 
     border-radius: 4px; 
     background-color: #DDDFE3; 
    } 

注:シンプルtoggleClassは、このケースでは動作しません - "すべて" であることをボタンを引き起こすトグルたとえそうであってはならない場合でも見える。このボタンは、いわば「カテゴリリスト」の最後に表示し、重複を防ぐために望んでいたされているので第二に、私は.categoryクラスからいくつかの小道具を継承しています。

、私はtoggleClassで行くと、ちょうどそれが動作するかもしれ小道具を複製する場合は、2番目の思想に...レムはこれを試してみて、それはそれを思わすべて明確化した後の更新

+1

toggleClassは使用できませんか? 'el.toggleClass(" category ")'である。 http://api.jquery.com/toggleClass/ –

+0

コードサンプル... ... – bcoughlan

+0

@Paul:直接ではありません... '.category.all'は、' .category'クラスのいくつかのプロパティを継承します。すべてのクラスは、選択的にデータを表示しているときに「すべて表示」を表示する単なるボタンです。ちょうど '.category'をトグルするのは継承された小道具の束なので動作しません – PhD

答えて

2

を投稿:場合

  • ボタンをクリックすると、それが(関係なく、親が.isCategorizing持っているかどうかの)
  • を非表示にするボタンが.allを持っていない場合、あなたは親がisCategorizing
  • 012を持っている場合にのみ非表示にすることにしたいしたい、 .allあり

この場合、最も簡単なのはallクラスの意味を逆にして、代わりにクラスpartialを使用することです。その後、行うことができます。私はそのようそれが.not-allという名前に好む

.category { 
    display: none; 
} 

.category.partial { 
    display: inline-block; 
} 

.isCategorizing .category.partial { 
    display: none; 
} 

.allを廃棄することは、他のコードで問題を導入する場合は、ここでは表示されません、あなたはそれを使用し続けるとも.partialを導入することができます(その場合には、関係は保守者にとってより明らかです)。あなたはこれを行うことができます。

  1. は新しいnot-allクラスによってトリガーされる新しいセレクタ内部display CSSスタイルセッターの移動すでにtoggleClass('.all')を持っている一つまたは二つの場所へtoggleClass('.not-all')、および
  2. を追加
+0

' .all'クラスは 'isCategorizing'クラスとは独立にトグルされます。私は条件付きトグルをしたいと思います...' isCategorizing'ならば可視性前の可視性に関係なく、 '.category.all'の隠されているはずです。 – PhD

+0

@Nupul:何が起こっているのかを説明してください。トグルするクラスはどれですか、トグル状態の組み合わせごとに何を起こしたいですか? – Jon

+0

私は、 'all view'操作を担当するボタン '.all'を持っています。 '.isCategorizing'クラスが適用されている場合、このボタンは非表示にする必要があります。このボタンは、ユーザーが特定の「カテゴリ」を選択して表示するときに表示されます。部分的に表示されている場合は、「すべての投稿を表示する」の便宜のためにのみ表示されます。ただし、「分類」操作が進行中の場合、このボタンは元々隠されていたかどうかにかかわらず、非表示にする必要があります。分類が終了すると、ユーザが以前に部分集合、すなわち、部分集合を以前に見ていた場合に、ボタンが見えるようにすることができる。カテゴリ... – PhD

関連する問題