2011-07-16 11 views
2

私はこのドロップメニューをクリックして、ホバーの代わりに動作させようとしていますが、動作しないようです。誰のアイデアですか?jQueryドロップメニュークリックしないでホバリング

// Drop Menu 
$(".navigation ul ul, .shoppingbasket ul ul").css({display: "none"}); 
$(".navigation ul li, .shoppingbasket ul li").hover(function(){ 
$(this).find('ul:first').css({visibility: "visible",display: "none"}).slideDown(400); 
},function(){ 
$(this).find('ul:first').css({visibility: "hidden"}); 
}); 
+0

あなたは 'クリック' で単語 'ホバー' に置き換えてみました(ライン2) – Guidhouse

+0

@Guidhouse - ?(、.clickが動作しません)一つだけのハンドラを取り、.hover ()は2つを取る - 私の答えを参照してください。 –

答えて

4

.hover()第二のときにマウスの葉が実行され、あなたのマウスが入ったときに最初のものが実行され、2つのハンドラを取ります。このため、.click()は、クリックしたときに実行されるハンドラが1つしかないため、.hover().click()と交換するだけで動作しません。しかし、.toggle()を使用して、複数のハンドラをバインドして、1回のクリックで実行することができます。

$(".navigation ul ul, .shoppingbasket ul ul").css({display: "none"}); 
$(".navigation ul li, .shoppingbasket ul li").toggle(function(){ 
    $(this).find('ul:first').css({visibility: "visible",display: "none"}).slideDown(400); 
    },function(){ 
    $(this).find('ul:first').css({visibility: "hidden"}); 
}); 

Try it out here.

また、W/O HTMLを伝えるのは難しいですが、.slideDown()要素が見えるようになります、そしてあなたが.slideUp()を使用することをお勧めします。なぜ物事がよりコンパクトになり、あなたが.click()を使用することができます.slideToggle()を、使用しないで、実際には

$(".navigation ul ul, .shoppingbasket ul ul").css({display: "none"}); 
$(".navigation ul li, .shoppingbasket ul li").toggle(function(){ 
    $(this).find('ul:first').slideDown(400); 
    },function(){ 
    $(this).find('ul:first').slideUp(400); 
}); 

Try it out here.

:?だから、このような何かをしようとする場合がありますか

$(".navigation ul ul, .shoppingbasket ul ul").css({display: "none"}); 
$(".navigation ul li, .shoppingbasket ul li").click(function(){ 
    $(this).find('ul:first').slideToggle(400); 
}); 

Try it out here.

+0

返事ありがとうございました返信ありがとうございました。私は頭がおかしくなり、サンプルコードを試しましたが、ドロップダウンリンクが動作しないことが判明しました。こちらを参照してください。http://www.media21a.co.uk/clientlogin/benaiahmatheson/benaiah-matheson/ – Delete

+0

@Adam - 今はあまり時間がないですが、問題はリンクが働いていることです。あなたはメニューをクリックしてドロップダウンしますが、この同じクリックは別のページにも送ります。トップレベルの項目をクリックするためには、デフォルトの機能を無効にする必要があります(これはおそらく、もともとはマウスを動かしてクリックしていないためです)。 gl - 私は時間があればもっと後で更新するかもしれません。 –

+0

別の問題は、あなたがより多くのsub ulを持っている場合です。これは動作しません。 – numediaweb

関連する問題