2015-02-11 132 views
1

我不知道我的腳本有什麼問題。如果我徘徊它,爲什麼。內幕消失?如果在內部懸停,我希望它可見。顯示/隱藏腳本不起作用

<ul class="drop"> 
    <li class="thumb"> 
     Arival 
     <ul class="inside"> 
      <li>První</li> 
     </ul> 
    </li> 
</ul> 

一些jQuery的位置:

$("li.thumb").hover(
    function() { $(this).children().show(); }, 
    function() { $(this).children().hide(); } 
); 

http://jsfiddle.net/0s7gd6g3/

+0

它不工作,因爲一旦你離開「Arival」,子菜單消失,所以你沒有機會到達它們。我認爲你可能需要重組你想如何工作 – 2015-02-11 10:01:00

+0

我認爲你需要'$(this).children('。inside')' – Satpal 2015-02-11 10:02:36

回答

0

嵌套子工作消失,因爲有li.thumbul.inside元素之間的間隙。當鼠標在這個區域子菜單隱藏,當然因爲.thumb不再徘徊,並且絕對定位了.inside

要解決它,你可以降低子菜單的top位置,而是用填充頂值垂直方向移動:

.inside { 
    border: 1px white solid; 
    display: none; 
    position: absolute; 
    width: 190px; 
    top: 37px; 
    left: -2px; 
    z-index: 10; 
} 

演示:http://jsfiddle.net/0s7gd6g3/8/

而且你並不真正需要的JavaScript在這種情況下,因爲它的簡單和更有效的CSS用例:

li.thumb:hover .inside { 
    display: block; 
} 
0

你需要增加拇指div的高度,這樣當你懸停時,它仍然存在,否則它將被限制在那個空間。

所以添加這個類:

.thumb { 
    height:100px 
} 

Working Fiddle

1
$(".drop").hover(
    function() { 
     $(this).find('.inside').show(); 
    }, function() { 
     $(this).find('.inside').hide(); 
    } 
); 

如果你想有一個jQuery的修復,這會爲你做它。只是改變了觸發隱藏/顯示的元素

+0

這不是很好的建議,因爲可以有多個嵌套的子菜單'.inside'。 – dfsq 2015-02-11 10:08:33

+0

但是隨着OP提出的情況,這是一個有效的解決方案 – 2015-02-11 10:09:39

+0

當然,真的,只是指出了可能的陷阱。 – dfsq 2015-02-11 10:13:04