div と div:before があります。マウスが :before 要素の上に移動 (ホバー) すると、その色が変わります。cssやjQueryに関係なくそれを行う方法はありますか?
div:before:hover のようなものを試しましたが、何も起こりませんでした
前もって感謝します
(質問を解決しません)cssだけで:
span:before {
color: red;
content: "hi";
}
span:hover:before {
color: blue;
}
html
<span>text</span>
編集:フィドルhttp://jsfiddle.net/bwkM6/
:before なしで特定の問題を回避する
:before
また、:after
疑似クラスは他の疑似クラス属性を持つことはできません。
どうやら、そのような疑似要素を組み合わせることはできません。:before
ただし、 CSSで行うのではなく、jQueryを使用して""要素をDOMに挿入することができます。
$(function() {
$('div.interesting').before('<div class="interesting-before"></div>');
});
次に、CSSで、.interesting-before
and.interesting-before:hover
の代わりに.interesting:before
andを参照します.interesting:before:hover
。
例については、 http://jsfiddle.net/Z97uN/2/を参照してください。
いくつかの解決策があります:
最も簡単 - 特定のクラスを div:before に割り当てます
//HTML
<div class="specificClass">A</div>
<div>B</div>
<style>
.specificClass:hover {color: red}
</style>
しかし、あなたの質問から、それはできないようです。次に、jQuery を活用します。
アプローチ #1
//JAVASCRIPT
$("div").prev().addClass("specificClass");
//in your CSS
.specificClass:hover {color:red}
アプローチ #2
//JAVASCRIPT
$("div").delegate($("div").prev(),"mouseenter mouseleave",function(){
$(this).toggleClass("specificClass");
}
//in your CSS
.specificClass {color:red}
これは、div が 2 つしかない場合にのみ機能することを理解しておく必要があります。それ以上ある場合は、最後を除くすべてが「.specificClass」を受け取ります。とにかく、「span:hover:before」が機能した場合も同じことが起こります。
何を達成したいのか、なぜ達成したいのかを説明していただければ、より良い解決策を提供できます。