2014-01-24 110 views
0

與我袒護我不是jQuery的專家。我製作了一個下拉式菜單,您點擊的第一個菜單菜單可以讓子菜單出現,並且其中的任何子菜單都會顯示/隱藏懸停/懸停。我有唯一的問題是我想要的主導航,收於點擊文檔jQuery下拉菜單不關閉

jQuery(document).ready(function() { 
     jQuery(".mainNav ul li").click(function() { 
      jQuery(this).find("> ul").css({ "opacity": "1", "visibility": "visible", "top": "30px" }); 
      }); 
     jQuery(".sub-menu li").mouseover(function() { 
      jQuery(this).find("> ul").css({ "opacity": "1", "visibility": "visible", "top": "30px" }); 
     }); 
     jQuery('.sub-menu li').mouseout(function() { 
      jQuery(this).find("> ul").css({ "opacity": "0", "visibility": "hidden", "top": "35px"}); 
     });}); 

//the code i tried below 
jQuery('document').click(function() { 
     jQuery(.mainNav ul li).find("> ul").css({ "opacity": "0", "visibility": "hidden", "top": "35px"}); 
    });}); 

    }); 

我假定兩個click事件是矛盾的任何地方,但我不是太肯定熟悉如何處理它。我會感謝一些幫助

編輯 - 我搞砸了,下拉關閉,如果我改變點擊事件到'h1'元素,它正下方。然後我將它改爲.container,子菜單甚至沒有出現。

+1

不宜'的jQuery(.mainNav UL LI)'是'的jQuery( 'mainNav UL禮')' – hjpotter92

+0

啊,是我輸入,在寫意,不可複製/糊。謝謝! – user1375823

回答

1

您可以使用jQuery的.not:not

jQuery(document).not(".mainNav ul").click(function() { 
    jQuery(".mainNav ul li").find("> ul").css({ "opacity": "0", "visibility": "hidden", "top": "35px"}); 
});}); 

你錯過了在選擇一些括號,我加入以及

你也有一組額外的});和你document點擊功能不在ready函數內。嘗試,由mouseout

在邊之後去除});like so把它的功能齊全的內注意您可以使用$代替jQuery,如果你想

編輯

我它工作in my jsFiddle使用:noton("click",...嘗試完整的jQuery,如果這個片段不起作用

jQuery(document).on("click", ":not(.mainNav ul, .mainNav ul *)", function() { 
    jQuery(".mainNav ul li").find("> ul").css({ 
     "opacity": "0", 
      "visibility": "hidden", 
      "top": "35px" 
    }); 
}); 
+0

嗯,它似乎仍然不工作=(。謝謝 – user1375823

+1

刪除'document'周圍的引號。現在應該工作 –

+0

它會有所不同,這是一個wordpress主題,也許這就是爲什麼它不是wroking?某處我應該使用jQuery而不是$與wordpress工作時,也許這是一篇舊文章?仍然不適用於刪除的引號,該死的。 – user1375823

1

你可以試試這個:

jQuery(document).not('.mainNav ul').click(function() { 
//-----^------^-------you have to remove quotes here.