マウスオーバーに基づいてクラスを変更するのではなく、CSS でこれを解決することを検討する必要があります。
CSS を変更した場合:
.inactive{
font-size:115%;
margin-top:3%;
padding:1%;
}
.active{
text-decoration:none;
background:#e1edff;
font-size:115%;
margin-top:3%;
padding:1%;
}
に:
.menu-element{
font-size:115%;
margin-top:3%;
padding:1%;
}
.menu-element:hover {
text-decoration:none;
background:#e1edff;
}
次に、mouseover/leave に基づいて CSS クラスを切り替えるコードを削除し、代わり.menu-element
にすべての要素に対して に設定することで、さまざまなブラウザー間で一貫した動作を得る必要があります。
編集: @iGanja が以下で指摘したように、一部の機能、つまり、メニュー項目に属するセクションにカーソルを合わせるとメニュー項目が強調表示される必要があることに気づきませんでした。
CSS でメニュー自体にマウス オーバー効果を適用し、代わりにイベントからコンテナー ID を削除することをお勧めします。
$('#home').mouseenter(function(){
$('li#NAVhome').removeClass('inactive').addClass('active');
});
$('#home').mouseleave(function(){
$('li#NAVhome').removeClass('active').addClass('inactive');
});
//faqs div
$('#faqs').mouseenter(function(){
$('li#NAVfaqs').removeClass('inactive').addClass('active');
});
$('#faqs').mouseleave(function(){
$('li#NAVfaqs').removeClass('active').addClass('inactive');
});
//book div
$('#book').mouseenter(function(){
$('li#NAVbook').removeClass('inactive').addClass('active');
});
$('#book').mouseleave(function(){
$('li#NAVbook').removeClass('active').addClass('inactive');
});
//connect div
$('#connect').mouseenter(function(){
$('li#NAVconnect').removeClass('inactive').addClass('active');
});
$('#connect').mouseleave(function(){
$('li#NAVconnect').removeClass('active').addClass('inactive');
});
これにより、マウスをセクションに重ねたときのホバリング効果を維持しながら、メニュー効果の信頼性が向上します。構文.toggleClass()
の代わりに使用することで、コードを短縮できる場合があります。if..else
( http://api.jquery.com/toggleClass/ )