これは非常に奇妙なバグです。マウスが要素上を非常に速く移動している場合を除いて、ほとんどの場合に機能するため、私のコードはおそらく正しいでしょう。
ここに私のCSSがあります:
<style type="text/css">
.fadeto {
opacity:0.4;
position:box;
}
.selected {
opacity:1.0;
border-style:solid;
border-color:gold;
}
</style>
ここに私のHTML本文があります:
画像をクリックして、永続的な表示を切り替えます。または、ここをクリックしてすべてを切り替えます: Toggle
<div style="margin:50px;">
<img class="fadeto" src="nature.jpg" /><!--you can change the source-->
<img class="fadeto selected" src="nature.jpg" /><!--by default selected, just not to waste time selecting elements-->
<img class="fadeto" src="nature.jpg" />
<img class="fadeto" src="nature.jpg" />
<img class="fadeto" src="nature.jpg" />
<img class="fadeto" src="nature.jpg" />
<img class="fadeto" src="nature.jpg" />
<img class="fadeto" src="nature.jpg" />
</div>
<div id="feedback"></div>
これが私のjQueryスクリプトです:
<script>
$(document).ready(function(){
$('.fadeto').hover(function(){
$(this).fadeTo(100, 1);
},function() {
if(!$(this).hasClass('selected'))
$(this).fadeTo(100,0.4, function(){
$(this).removeAttr('style'); //removed IF not selected
document.getElementById('feedback').innerHTML +=$(this).attr('style');
});
else {
$(this).removeAttr('style'); //removed IF selected
document.getElementById('feedback').innerHTML +=$(this).attr('style');
}
})
.click(function(){
$(this).toggleClass('selected');
});
$('#Toggle_Button').click(function(){
$('.fadeto').toggleClass('selected');
});
});
</script>
画像上でマウスを通常の速度で、急がずに動かすと、すべてが完全に機能します。しかし、要素の上にマウスをすばやく移動しようとすると、トグル ボタンでバグが発生します。一部の要素は不透明度 1.0 のままです。
要素に適用されている競合する CSS クラス ルールが上書きされるため、要素を style="opacity:1;" のままにしたくないため、各アニメーションが終了したら style 属性を削除します。
<div>
スタイル属性が削除されたかどうかを追跡できるように、フィードバックを含めました。はい、マウスがどれだけ速く動いても、そこにあるコードが実行され、スタイルは未定義です。
また、スタイルシートは上から下に読み込まれることを知っているので、「選択された」クラスを「fadeto」の後に含めました。これは、その不透明度ルールが他のクラスよりも優先されるためです。
コードに問題がある場合は、助けてください。それ以外の場合は、どうすればよいですか? 何を指示してるんですか?