JSFiddle リンク: http://jsfiddle.net/2JUEJ
IE8 でページを開くと、マウスがコンテナー DIV (class=tableRow) に入ると、hover
その最初の子 DIV (class=tile/wideTile/longTile) のイベントが発生します。Fxでうまく動作します。event.preventDefault();
親のイベントで使ってみましたhover
が、直りません。手がかりはありますか?
JSFiddle リンク: http://jsfiddle.net/2JUEJ
IE8 でページを開くと、マウスがコンテナー DIV (class=tableRow) に入ると、hover
その最初の子 DIV (class=tile/wideTile/longTile) のイベントが発生します。Fxでうまく動作します。event.preventDefault();
親のイベントで使ってみましたhover
が、直りません。手がかりはありますか?
クラスfloat:left
とdisplay:table-cell
の組み合わせは互換性がありません。設定すると、自動的に表示がブロックに設定されます。ChromeまたはFirebug/Firefoxで計算されたスタイルを見てください。.tile
float
テーブルセルをフローティングすると、ブラウザが匿名のテーブルオブジェクトを生成し、IE8でレンダリングエラーが発生する場合もあります。Chrome/Firefoxは非互換性を別の方法で解釈していると思います。
削除するdisplay:table-row
と、IEはセルをわずかに良くレンダリングし、他の行の子にカーソルを合わせたときに最初のセルのホバーイベントがトリガーされなくなります。ただし、これは意図したレイアウトを壊すため、新しいアプローチを使用することをお勧めします。
最初にすべてのdisplay:table-*
ルールを削除します。これは、すべてがフロートされているため(すでに述べたようにdisplay:block
)、すべてがフロートされているため、それぞれtable
に幅が必要です。そうでない場合、すべての要素が互いに水平になります。たとえば420px
、.table
クラスで試してみました。
注:個人的には、フロートを完全に削除し、display:inline-block;vertical-align:top
いくつかのポジショニングを組み合わせて使用することをお勧めします。フローティングは通常、クリアするために追加のルールやマークアップが必要になるためです(CSSフロートは好きではありませんでした!)
この回答の一部を説明するのに役立つ可能性のあるその他の質問:
イベントは子から親に伝播されます。子divハドラーでevent.stopPropagation()を試してください。
この方法を試してください:
$(document).ready(function() {
$(".title").hide();
$(".tile, .wideTile, .longTile").hover(function() {
$("div[class=title]", this).stop().slideDown("fast");
}, function() {
$("div[class=title]", this).stop().slideUp("fast");
});
});
このスクリプトを使用してみて、これが役立つかどうかを確認してください。