自分で解決できず、解決策が見つからない問題があります。Chrome と Firefox で動作する jQuery でスクリプトを作成しましたが、IE (最新のものでも) では動作しません。
一見すると、HTML は次のようになります::
<div id="ContentThatIsAbove"></div>
<div id="someContainer">
<div id="bonmenu_info_container" style="float: left;">
<div id="bonmenu_info"></div>
<div id="1_info"></div>
<div id="2_info"></div>
<div id="3_info"></div>
</div>
<div id="bonmenu" style="float: right;">
<div class="1"></div>
<div class="2"></div>
<div class="3"></div>
</div>
</div>
次のような jQuery スクリプト: (「$」の代わりに「$j」が使用されます)
<script type="text/javascript">
var $j = jQuery.noConflict();
$j(window).load(function() {
var MenuOffsetY = $j("#bonmenu").offset().top;
$j(window).scroll(function(){
if($j("html").position().top < -MenuOffsetY && $j("html").position().top >-1400 )
{
$j("#bonmenu_info_container").css('position', 'fixed');
$j("#bonmenu_info_container").css('top', '0');
$j("#bonmenu_info_container").css('margin-top', '10px');
$j("#bonmenu_info_container").fadeIn();
}
else if($j("html").position().top >= -MenuOffsetY)
{
$j("#bonmenu_info_container").css('position', 'relative');
$j("#bonmenu_info_container").css('top', '');
$j("#bonmenu_info_container").fadeIn();
}
else
{
$j("#bonmenu_info_container").fadeOut();
}
});
$j("#bonmenu_info_container").children().hide();
$j("#bonmenu_info").show();
//This part below works perfectly everywhere.
$j("#bonmenu").mouseover(function(){
$j(this).children().each(function(){
var infoId = "#"+jQuery(this).attr('class')+"_info";
$j(this).mouseover(function(){
$j("#bonmenu_info_container").children().hide();
$j(infoId).show();
});
});
}).mouseleave(function(){
$j("#bonmenu_info_container").children().hide();
$j("#bonmenu_info").show();
});
});
</script>
それがどのように機能するかの説明:
ページをスクロールしているときに #bonmenu_info_container がウィンドウの上部に表示されないようにします。そのため、最初の if ステートメントでは、html の position.top 値をチェックして #bonmenu が上部に消えるかどうかをチェックします。ステートメントが true の場合、#bonmenu_info_container の css 位置の値は、相対から固定に、またはその逆に変更する必要があります。
Chrome/FF での動作を確認できます: http://bonappetea.com/menu
Chrome/FF $('html').position().top の値はスクロール中に変化しますが、IE では変化しません。なぜなのかご存知ですか?または、私よりも優れた解決策がありますか?
このコードをどうすればいいのかまったくわかりません。すべてをゼロから始めたくありません。