5

私は少し混乱しています。私は $.css() メソッドから、何があっても css プロパティを要素に追加することを期待していました。Chrome 開発ツールと同じように、要素に css プロパティを適用すると、それが単純に HTML に表示されます。しかし、どうやらそれがサポートされているかどうかを何らかの方法でチェックします。たとえば、次のコマンドを実行すると:

$('#element').css('display','block'); /* returns jQuery object) */
$('#element').css('display') /* returns "block" */

しかし、次のようなものを置くと

$('#element').css('hurr','durr');
$('#element').css('hurr') /* returns undefined */

では、jQuery はプロパティが適用可能かどうかをチェックしますか?

もう一つの例。Opera は現在 CSS フィルターをサポートしていません。それともそうですか?ここで説明したメソッドを使用したところ、驚くべきことにtrue「filter」が返されました。次に、$.css で適用しようとしました。

$('#element').css('filter','blur(5px)');
$('#element').css('filter') /*returns "" (an empty string) *

したがって、jQuery は要素がサポートされているかどうかをチェックするだけでなく、値が正当かどうかもチェックします。それはどのように正確に行うのですか?プロパティがサポートされているかどうかを確認する正しい方法は何ですか?

4

2 に答える 2

5

css 関数は、各ブラウザーがさまざまな css プロパティにアクセスするさまざまな方法を標準化するために多くの作業を行います。たとえば、float の W3C 標準プロパティは ですがcssFloat、Internet Explorer はそれを呼び出しますstyleFloat

このため、jQuery は受け入れられた css プロパティでのみ機能します。filter独自の (ブラウザー固有の) プロパティです。

于 2013-05-04T21:07:06.920 に答える
4

jQuery は確かに一部の値を除外していますが、この場合、意図的にそれを行っているわけではありません。これは、それが有効なスタイルではないgetComputedStyle()ことを明らかに知っているスタイルを取得する方法に関係しているため、その一部として返されず、jQuery が計算されたスタイルで " を検索すると、そこにないため、それはありません。戻ります。"hurr""hurrundefined

Chrome では、jQuery 経由で設定した場合でも、スタイル値が実際にスタイル オブジェクトにあるように見えますが、実際のスタイルではないため、適切に取得され.css()ません。

サポートされていないスタイル値を設定する場合は、スタイル オブジェクトを直接使用できますが、jQuery コードのいくつかのコメントによると、IE の一部のバージョンでは、不明な値を設定しようとすると例外がスローされる可能性があります。

var elem = document.getElementById("element");
elem.style.hurr = "durr";
console.log(elem.style.hurr);   // in Chrome, gives you "durr"
于 2013-05-04T21:09:50.923 に答える