2016-12-24 8 views
1

次のように私は、スタイルを適用し、それは私にとって素晴らしい作品:jQueryの変更TDスタイル

$("td[id='cellId']").css("text-align", "left"); 

しかし、私はそのスタイルを必要としますテキストボックスとラジオボタンが含まれていない場合は、TDにのみ適用されます。

私は高低を検索しましたが、find(),などが動作していないようです。

+1

は、あなたが本当に '' = IDを使用することを意味しますか? IDは一意でなければなりません。 – Barmar

+1

そして '[id = cellId]'ではなく '#cellId'を使うべきです – Barmar

答えて

1

:has()セレクタを使用して、他の要素を含む要素を一致させます。あなたの$("td[id='cellId']")はかなり驚くべきことである

$("td#cellId:has(:text)").css("text-align", "left"); 
0

最初のノート:私はあなたが$('#' + cellId)を使用する必要がありますので、セルIDが含まれているいくつかのvar cellIdを持っていることを推測することがあります。

ここでは、tdの(最終的に)ネストされた要素については正確ではないため、の中にラジオボタンがありません。
とにかく、必要に応じて入力したvar cellElemがあるとしましょう(上記のようなものかもしれません)。

だからあなたはこのような何かを使用することができます:

if (!cellElem.find([type=radio]).length) { 
    cellElemn.css(textAlign: 'left'); 
} 
0

あなたはテキストボックスとNOTラジオボタンが含まれているTD-Sをフィルタリングする必要がある場合は、使用する必要が:has:not組み合わせ:

$("td:not(:has(input[type='radio']))").has("input[type='text']").css("background", "red"); 

ここには、フィルタリングされたセルが赤い背景を持つスニペットがあります。あなたはどんなスタイルでもそれらを適用することができます。

$("td:not(:has(input[type='radio']))").has("input[type='text']").css("background", "red");
td { 
 
    border: 1px solid green; 
 
    padding: 5px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
<tr> 
 
    <td><input type="text">cell-1-1</td> 
 
    <td><input type="radio">cell-1-2</td> 
 
    <td><input type="text"><input type="radio">cell-1-3</td> 
 
</tr> 
 
<tr> 
 
    <td><input type="radio">cell-2-1</td> 
 
    <td><input type="text">cell-2-2</td> 
 
    <td>cell-2-3</td> 
 
</tr> 
 
</table>

+0

これはまさに私が探していたものです!ありがとう! – user3695961

+0

あなたはそれをupvoteし、受け入れられた答えとしてマークすることができます – Banzay

関連する問題