2017-05-14 16 views
0

は、私が<a>を持っていないと私はそれのみに2つ目のものを適用したいすべての<td>要素に最初のCSSコードを適用したいクラスをテーブル要素に追加せずに要素にCSSを適用する方法はありますか?

td { 
    padding: 8px; 
} 

td a { 
    display: block; 
    padding: 8px; 
    width: 100%; 
    height: 100%; 
} 

...私は、次のを持っていると言います持っているのは<a>です。

私は次のことを試してみました:

td:not(a) { 
    padding: 8px; 
} 

td:not(td a) { 
    padding: 8px; 
} 

どのように私は要素にクラスを追加することなく、この作業を行うことができますか?

+0

ない可能でCSSのみ。セルを区別するためにクラスを追加する必要があります。 – dfsq

+0

私はそれが事実だと思っていましたが、私が気づいていない何らかの方法があることを期待していました。 – rotaercz

+0

いいえ、CSSには "contains"(これは持っていましたが、タグではなくテキストコンテンツを意味する)または "has"がありません。ですから、あなたはJSが最初にTDにクラスを設定するようになります。 – dfsq

答えて

0

これはJavaScriptで行うことができます。イエローの背景を持つようにtd<a>要素を(簡単のために直接間接的と見なします)内に入れたいとします。ここではjQueryの例だ:

<table> 
    <tr> 
    <td>No a elements here</td> 
    <td>I have an <a href="#">a</a> element.</td> 
    </tr> 
</table> 

CSS:

td { 
    border: 1px solid blue; 
} 

スクリプト:

$(document).ready(function(){ 
    $('td a').parent().css('background', 'yellow'); 
}); 

ペンhttps://codepen.io/wahhabb/pen/QvxEjd

関連する問題