これは jQuery で広く知られている現象で、Internet Explorer のマウス リーブ機能が独自のものであるためです。jquery の mouseleave/mouseenter メソッドを使用する必要があります。
メソッドとメソッドを使用した更新されたフィドル フィドルを次に示します。動作し、IE7-9 でテストされています。mouseenter()
mouseleave()
簡単にするために、ここにもコードを含めます。
JS:
$(document).ready(function() {
$('#frame').mouseenter(function() {
var $this = $(this);
$this.append('<div id="overlay">blah blah</div>');
$this.addClass("hover");
}).mouseleave(function() {
$('#overlay').remove();
$(this).removeClass("hover");
});
$('#overlay').mouseleave(function() {
$(this).remove();
});
});
CSS:
#frame {
padding:5px;
border:1px solid black;
width:150px;
text-align:center;
position:relative;
}
#frame.hover {
border:1px solid red;
}
#frame img {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=25)";
filter: alpha(opacity=25);
-moz-opacity: 0.25;
opacity: 0.25;
}
#frame.hover img {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: alpha(opacity=100);
-moz-opacity: 1;
opacity: 1;
}
#overlay {
background-color:black;
color:white;
height:25px;
width:100%;
font-size:10px;
position:absolute;
bottom:0;
left:0;
}
編集:コメントで説明した結果に基づいて、フィドルと上記のコードを更新しました。完全に動作するはずです。動作しない場合はお知らせください。
もう少し詳しく:
このソリューションでは、IE のメソッドに多数の問題があるため、jQuery のメソッドmouseenter
とメソッドを使用します。ご存じかもしれませんが、は/の簡略版ですが、IE6-9 (およびおそらく IE 10 ですが、私はこれをテストしていません) に起因する多数の問題があります。特定の問題については、Stack Overflow または Google で「jQuery hover IE issues」を検索し、表示される結果の一部を参照してください。このため、特に IE のコードで既に問題が発生している場合は、 を使用するのではなく/を入力するのに常に 10 秒余分に時間がかかります。mouseleave
hover
hover
mouseenter
mouseleave
hover
mouseenter
mouseleave
hover
ご質問やご不明な点がございましたら、お知らせください。幸運を!:)