2011-02-17 10 views
1

私はホバー効果をULに適用しようとしていますが、1つのリスト項目の子であるULも効果を得ています。欲しい。私は> signと.not()セレクタを使って、しかしsuccesを使わずに、あらゆる種類のものを試しました。jQueryの子供(他のUL)を強調表示せずにリスト項目をハイライト表示

 <ul id="menu"> 
      <li class="menubox"><a href="#">Home</a></li> 
      <li class="menubox"><a href="#">Over Ons</a></li> 
      <li class="menubox"><a href="#" id="varianten">Producten</a> 
       <ul id="menu_varianten"> 
        <li><a href="#">1</a></li> 
        <li><a href="#">2</a></li> 
        <li><a href="#">3</a></li> 
       </ul> 
      </li> 
      <li class="menubox"><a href="#">Forum</a></li> 
     </ul> 

関連するかもしれないCSSのいくつか抜粋:

#menu { 
position: relative; 
width: 250px; 
} 

ul#menu{ 
list-style: none; 
margin-left: 0; 
padding-left: 0; 
} 

ul#menu li a{ 
display: block; 
text-decoration: none; 
height: 40px; 
} 

#menu_varianten{ 
list-style: none; 
display: none; 
margin-left: 0; 
padding-left: 0; 
} 

ul#menu_varianten li a{ 
padding-left: 4em; 
height:30px; 
} 

そしてここでjQueryのです:

$("ul#menu > li").hover(
    function() { 
     $(this).stop(true, true).animate({fontSize:"1.4em"}, 150); 
    }, 
    function() { 
     $(this).stop(true, true).animate({fontSize:"1.0em"}, 150); 
    }); 

私も試してみました。ここ

は私の(簡体字)HTMLですセレクタ( "ul#menu> li")ではなく( "#menu_varianten")、残念ながら動作しません。誰かがアイデアを持っている?

+0

はWouter、あなたはjsfiddle.netに移動し、適切なペインであなたのhtml/cssの/ jsファイルを置く必要がありますライブデモを見ることができます。非常にクールなサイト! – MrBoJangles

+0

MrBoJanglesに感謝します。私はこのサイトを聞いたことがありますが、それを試みたことはありません。すべてのソリューションのおかげで、私は次の時間に尋ねる前に間違いなくそれを試し、今後の質問にも使用します。 –

答えて

2

最初のアンカーのみを拡張できます。

彼らがそうであるように、あなたのHTMLとCSSを残すとするためにJavaScriptを変更します。

$("ul#menu li").hover(

function() { 
    $(this).find('a').first().stop(true, true).animate({ 
     fontSize: "1.4em" 
    }, 150); 
}, function() { 
    $(this).find('a').first().stop(true, true).animate({ 
     fontSize: "1.0em" 
    }, 150); 
}); 

http://jsfiddle.net/RCtFU/1/

+0

+1、親メニュー項目も拡大されています。これは素晴らしいボーナスです。 – eykanal

+0

これは素晴らしい解決策ですが、別のサイトではなく、ソリューションの内容をここに掲載してください。 – user113716

+0

@eykanal、ありがとう。あなたのソリューションは以下を使用しています:セレクタをあまり使用しません.find()を使用しないので、私は信じていますが、親は拡大していると仮定しました。 – Gazler

1

各サブメニューを各親のの兄弟にすることができます。 CSSは継承するので、これは問題のかなり簡単な回避になります。

例:あなたはメニューとサブメニューを区別するために、いくつかの更なる調整(異なるクラスなど)を行う必要がありますhttp://jsfiddle.net/RCtFU/

<li class="menubox"> 
    <a href="#" id="varianten">Producten</a> 
</li> 
<li class="menubox"> <!-- probably want to change the class --> 
    <ul id="menu_varianten"> 
     <li><a href="#">1</a></li> 
     <li><a href="#">2</a></li> 
     <li><a href="#">3</a></li> 
    </ul> 
</li> 

+0

あなたの助言Patrickに感謝します。あなたのソリューションには、すべてのサブメニュー項目が(jsFiddleに見られるように)親リストの大きなリスト項目として一緒に見えるという点で、あなたのソリューションには一つの欠点があると思います。これを回避するにはもっとコードが必要なので、私はGazlerの答えに行くと思います。しかしもう一度ありがとう。 –

1

あなたはCSS3セレクター:not()使用することができます。

$("ul#menu > li :not(ul)").hover(
function() { 
    $(this).stop(true, true).animate({ 
     fontSize: "1.4em" 
    }, 150); 
}, function() { 
    $(this).stop(true, true).animate({ 
     fontSize: "1.0em" 
    }, 150); 
}); 

jsFiddleを参照してください。

+0

:not()セレクタを使用することについての速い反応と助言をありがとうが、私のサブメニューはまだjsFiddleでもアニメーション化されています。 –

関連する問題