2009-08-25 7 views
2

В настоящее время я получил свое основное, заурядного дерево меню следующим образом:JQuery парения событие с вложенными элементами

<ul id="nav"> 
    <li> 
    <a href="#">home</a> 
    <div class="controls">Some controls go here</div> 
    <ul> 
     <li> 
     <a href="#">item 1</a> 
     <div class="controls">Some controls go here</div> 
     </li> 
     <li> 
     <a href="#">item 2</a> 
     <div class="controls">Some controls go here</div> 
     </li> 
    </ul> 
    </li> 
</ul> 

дива с классом «управления» скрыто, чтобы начать с. То, что я хочу, это то, что когда вы наводите курсор мыши на li, элементы управления для этого соответствующего шоу li (когда вы перемещаете мышь, они снова скрываются). Проблема возникает, когда вы наводите курсор мыши на один из вложенных файлов li, это отображает и его родители. Вот jQuery, который я использую:

$("#nav li").hover(
     function() { 
      $(".controls:first", this).css("display", "block"); 
     }, 
     function() { 
      $(".controls:first", this).css("display", "none"); 
     } 
    ); 

Спасибо за вашу помощь. Remy

+0

попробуйте использовать $ («# СЧА> Li») – TheVillageIdiot

+1

Эй Реми, были ли вы когда-либо удовлетворены вы получили ответ на это? У меня есть решение, которое работает хорошо, что я могу отправить, если вы хотите ...? – AJP

ответ

0

Вы можете сделать это без js, хотя вам понадобится js для ie6.

что-то подобное может работать:

$(this).children('div').css("display", "block"); 

или даже:

$(this).children('div').show(); 

Вот это "является ли.

5

Попробуйте остановить распространение события в функции наведения, чтобы предотвратить событие от пузырьков до родителя. Вы также можете посмотреть плагин hoverIntent, чтобы решить проблемы «мигающих» эффектов зависания, если ваши «зависающие» элементы находятся близко друг к другу.

$("#nav li").hover(
    function(e) { 
      e.stopPropagation(); 
      $(".controls:first", this).css("display", "block"); 
     }, 
     function() { 
      $(".controls:first", this).css("display", "none"); 
     } 
); 
+0

8 лет спустя и действительно желаю, чтобы я мог купить вам пиво для этого ответа :) –