2017-03-16 4 views
0

特定のスパンに特定の色を付ける必要があります。ただし、以前の兄弟に「display:block」がある場合に限ります。私はHTMLに直接アクセスすることはできませんので、これが私が扱える唯一のクラスです。このスパンが表示されている場合のみ、次の兄弟を選択する

<div class="price-content"> 
    <span class="old-price"> 
    **<span class="new-price>** 
    <span class="percentage"> 
</div> 

私はこれをページ全体に繰り返し、「古い価格」はデフォルトでは表示されません。しかし時々それは "display:block"を持っています。 「旧価格」が表示されている場合のみ、「新価格」に特定の色を与えることはできますか?

+2

私はあなたがこのために小さなJavaScriptを使用する必要があると思います。私はCSSソリューションを考えることができません。これまでに試したことがありますか? – Lucian

+1

'display:block'がインラインスタイルであればCSSで行うことができます。そうでなければ - yesはjavascriptを必要とします(とにかくそれはあまり意味のないオプションです) – Damon

答えて

1

、すべての.old-priceの要素を探します。 display:blockがある場合は、兄弟の.new-price要素を変更します。ここでは例です:

$(document).ready(function() { 
 
    $.each($('.price-content > .old-price'), function(i, el) { 
 
    $oldPrice = $(el); 
 
    
 
    if ($oldPrice.css('display') === 'block') { 
 
     $oldPrice.next('.new-price').css('color', 'purple'); 
 
     // Or maybe do 'addClass' for semantic's sake 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="price-content"> 
 
    <span class="old-price" style="display: none">$5.98</span> 
 
    <span class="new-price">$5.15</span> 
 
    <span class="percentage">14%</span> 
 
</div> 
 

 
<hr /> 
 

 
<div class="price-content"> 
 
    <span class="old-price" style="display: block">$5.98</span> 
 
    <span class="new-price">$5.15</span> 
 
    <span class="percentage">14%</span> 
 
</div>

+0

もっと簡単なことは、私のために働いただけで、if文を追加するだけでしたが、正しい答えとしてそれを選択します。 – Sergi

1

AFAIK、これを行うにはJavaScriptが必要です。簡単な解決策は、.old-price要素がdisplay: block(以下blockと呼ばれます)であるかどうかを表す新しいクラスを追加することです。 jQueryのを使用して

.old-price.block + .new-price { 
 
    color: red; 
 
}
<div class="price-content"> 
 
    <span class="old-price block">OLD PRICE</span> 
 
    <span class="new-price">NEW PRICE</span> 
 
    <span class="percentage">%</span> 
 
</div>

+0

申し訳ありません、私はHTMLに直接アクセスすることはできません。 – Sergi

+0

右ですが、HTML要素を変更できるJavaScriptにアクセスできます。 –

関連する問題