0

jQuery を使用して DOM 内のすべてのタグを選択し、background-color プロパティが設定されたタグのみに影響を与えることができるかどうか疑問に思っていました。最終的にはさまざまな配色を追加したいのですが、それは背景色の問題です。

4

2 に答える 2

5

私はこれがうまくいくと思います:

var hasBackground = $("*").filter(function() {
    return !!this.style.backgroundColor;
});

...その後、スタイルが直接hasBackground設定された要素のセットになります(たとえば、スタイル ルール経由ではありません)。background-color

しかし、「テーマ」をサイトに適用する最善の方法は、次のように、個々の要素のルールではなく、CSS スタイルシートを交換することだと思います。

<link rel="stylesheet" type="text/css" href="http://jsbin.com/evilit/1">
<link id="style" rel="stylesheet" type="text/css" href="http://jsbin.com/ireted/1">
<script>
(function() {

  setInterval(swapStyles, 1000);

  function swapStyles() {
    var style = $("#style");
    if (style[0].href.indexOf("ireted") === -1) {
      style[0].href = "http://jsbin.com/ireted/1";
    }
    else {
      style[0].href = "http://jsbin.com/uhoqob/1";
    }
  }

})();
</script>

実例| ソース

どこhttp://jsbin.com/evilit/1にある:

body {
  font-size: 26pt;
}

そしてhttp://jsbin.com/ireted/1次のとおりです。

body {
  background-color: yellow;
}

そしてhttp://jsbin.com/uhoqob/1次のとおりです。

body {
  background-color: #eee;
}

この例では、2 つのスタイルシートが読み込まれていることに注意してください。1 つ目はフォント サイズを定義し、2 つ目 (1 秒ごとに入れ替えます) は背景色を定義します。

于 2013-04-28T21:37:07.487 に答える