2012-04-21 8 views
2

1つだけのオカレンスがある場合、特定のスタイルを要素に適用するCSSセレクタ(CSS3 +は問題ありません)はありますか?例えばオカレンスが1つしかない場合、要素にCSSを適用しますか?

、以下のCSSルール:HTMLでの.info の唯一の発生がある場合

border: 1px solid black; 

が...のみの.info に適用されます。

ので、

<p class="info">This would have a border because there is only one</p> 

と、

<p class="info">This would not have a border because there are two</p> 
<p class="info">And neither would this</p> 

私はどちらかをプログラムなどの追加のクラスを適用する必要がありますするつもりだ推測している:.single-発生またはcount Javascriptでの出現回数?

編集:

いくつかのことを明らかにする。

私はJavascriptを私がしようとしていることの解決策と言いますが、それは私がそれを使うつもりはないということです。私は振る舞いではないもののためにJSを避けようとしています。だから私はJavascriptの答えを望んでいない、それは達成するために信じられないほど簡単です - 私の質問はCSSについてです。 検索結果

はまた、それらが混乱に:私が使用している実際のクラスがあるので、機会にページ上の唯一の単一クラスが存在することになる理由を、です。場合によっては、結果が1つしかない場合もあります。しかし、唯一のものがあるため、アイテムが検索結果として知られるオブジェクトのクラスの一部になることはできません。意味的に(そして論理的に)もちろん、1つのクラスのクラスがあります。時には、ブランケットルールを適用するのではなく、セマンティクスについてもう少し考えるべきだと思います。

+1

私はあなたの質問の要件を満たす解決策がないと確信しています。CSSは、この場合、仕様または実際の実装のどちらでも提供しません。 – michaelward82

+0

@ michaelward82。ありがとう、私はそれほど疑わしい。 –

答えて

4

ページの構造によって、あなたは:only-of-type擬似クラスを使用することができるかもしれません要素に同じタグ名の兄弟がない場合に一致します。それよりも具体的になる方法はないと思います。

+0

それはうまくいくようです。ですから、検索結果が1つしかない場合は、次のようにスタイルを設定することができます:#search-results .search-result:type-of-type {border:0; } –

0

これにはCSSソリューションはありません。私はあなたのJavaScriptのアイデアと一緒に行きます。どのようにこのソリューションについてhttp://reference.sitepoint.com/css/css3psuedoclasses

+0

もう一度... http://stackoverflow.com/questions/2826791/am-i-using-to-much-jquery-when-am-i-crossing-the-line/2826810#2826810 –

+2

@Truth、私はjQueryを過剰に使用していることに心から感謝します。すでにjQueryを使用している場合にこのソリューションを1つのオプションとして提案しています。確かに、そこに[ライブラリの他の](http://javascriptlibraries.com/)があり、彼が使用している可能性がありますが、私はすべての例を掲載するつもりはありませんでした。なぜライブラリを使うのですか?もちろん、独自の['getElementsByClassName'](http://ejohn.org/blog/getelementsbyclassname-speed-comparison/)関数を作成してください。しかし、そのすべてがOPの特権です。 –

-1

:ここではCSS3の擬似クラスの

$('.info').length 

リスト:あなたはjQueryのを使用した場合、あなたのようなものを使用することができます。

CSS

.info.highlight { border: 1px solid black } 

jQueryを使用して)JavaScriptの

var $info = $('.info'); 
if ($info.length === 1) { $info.addClass('highlight'); } 

デモンストレーション:http://jsfiddle.net/joshdavenport/YdbuB/

+4

-1。 OPは彼がCSSセレクターを探していると述べた。彼はまた、もし彼がいなければ彼はJavaScriptに頼らざるを得ないことを知っていると言いました。 [tag:css]の質問にJavaScriptを置くだけでなく、jQueryも入れました! http://stackoverflow.com/questions/2826791/am-i-using-too-much-jquery-when-am-i-crossing-the-line/2826810#2826810 –

+0

私の質問はCSSに関するもので、Javascriptではありません。しかし、ありがとう。 –

関連する問題