1

これは古い質問であり、同様の質問(解決済み)はさらに複雑です。しかし、私は試してみましたが、自分でそれを理解することができませんでした。

私は持っています

<div style="color:white; padding:10px">Text</div>

色を赤に変更したい:

div[style*="color:white"]{color:red}

$('div').filter(function() {
    return $(this).css('color') == 'white';
}).css("color", "red");

空白の有無にかかわらず、cssとjavascriptの両方を試し、16進数またはRGBのカラーコードを使用しました。

4

5 に答える 5

3

問題は、それがあなたが期待しているものを返さないということです。実際にrgb(255, 255, 255)は、「白」ではなく、RGB文字列を返します。それを変えるとあなたは金色になります。

JSFiddleの例

于 2013-01-06T02:32:41.193 に答える
2

実際$(this).css('color')に戻ってきますrgb(255, 255, 255)のでご利用いただけます

$('div').filter(function() {
    return $(this).css('color') == 'rgb(255, 255, 255)';
}).css("color", "red");

例。

于 2013-01-06T02:32:54.593 に答える
1

.css()のJQuery APIドキュメントには、次の文が書かれています。

「異なるブラウザは、論理的には等しいがテキスト的には等しくないCSSカラー値を返す場合があります(例:#FFF、#ffffff、rgb(255,255,255))。」

return $(this).css('color') == 'rgb(255, 255, 255)';ですから、単純に将来的にも問題が発生する可能性があると思います。

そして、ここでは、cssクラスを使用して次のように実装することをお勧めします。

.white{color:white;}
.red{color:red;}

$('div').filter(function() {
    return $(this).hasClass('white');
}).removeClass('white').addClass('red');

そして、なぜdiv[style*="color:white"]{color:red}機能しないのか、これはインラインcssが3つの方法の中で最も優先度が高いためです。

于 2013-01-06T02:56:15.383 に答える
0

あなたはそこで非常にファンキーなことをしているので、フィルター関数はそのように使われるべきではありません。dom要素を選択し、jqueryでそのcssを変更するには、これを行います$('div').css({'color': 'red'});

これが実際の例です

jqueryの適切な紹介については、すばらしいChrisCoyerによるこのビデオをお勧めします。

于 2013-01-06T02:31:40.023 に答える
0

インラインCSSは、内部または外部のスタイルシートを引き継ぎます。その特定の要素のインラインcssを削除して、そのようなものに置き換えること<div class="myElememt"></div>ができる場合は、理想的です。jQueryの使用に関しては、フィルターなしのCSSメソッドを使用して変更しました。

$('div').css('color', 'blue');
于 2013-01-06T02:31:55.380 に答える