2012-04-22 2 views
0

Итак, у меня есть родительский div с 7 дочерними div. Каждый из этих 7 divs является контейнером, который будет переключаться при наведении или щелчке. Как я могу прикрепить событие к одному из 7 разделов, чтобы отображалось только его содержимое? Прямо сейчас, если я нахожусь, отображается содержимое всех div. Мне нужно навести курсор и отображать только содержимое зависающего div.Выбор определенного div в родительском div на основе события (hover)

$('div#HoldsAll').on('hover', function(){ 
$('div.none').show(); 
}); 

<div id="HoldsAll"> 

<div class="none"> 
<p>A hover over this parent div should display only this</p> 
<p>and this</p> 
<p>and this too</p> 
</div> 
<div class="none"> 
<p>This should remain hidden</p> 
</div> 
<div class="none"> 
<p>This should remain hidden, too</p> 
</div> 

+0

Пожалуйста, покажите существующий код JQuery. –

+0

@navarro попробуйте обновленное решение. – undefined

ответ

0

У вас есть повторяющиеся идентификаторы (id="none"), что не допускается и может привести к неожиданному поведению, например, что вы видите здесь.

+0

Вы можете обновить или удалить свой ответ, потому что кто-то может опросить ваш вопрос, поскольку нет дублированных идентификаторов после того, как вопросник обновил вопрос. – KULKING

1

вы должны использовать только один уникальный идентификатор для одного единственного элемента, используйте class="none":

если содержание DIV с классом ни скрыто там не элемента парить, попробуйте это:

CSS:

.none p {display: none;} 
span {color: red} 

HTML:

<div id="HoldsAll"> 

<div class="none"> 
<span>show</span>  
<p>A hover over this parent div should display only this</p> 
<p>and this</p> 
<p>and this too</p> 
</div> 

<div class="none"> 
<span>show</span>  
<p>This should remain hidden</p> 
</div> 

<div class="none"> 
<span>show</span>  
<p>This should remain hidden, too</p> 
</div> 

</div>  

JQuery:

$(function() {    
    $('.none').hover(function() { 
     $(this).find("p").show(); 
    }, function() { 
     $(this).find("p").hide(); 
    }); 
}); 

http://jsfiddle.net/faNtu/

+0

Эта привычная работа основана на простом факте, что если divs независимо от id или класса скрыты, пользователь не может нависнуть над элементами. – KryptoniteDove

+0

@KryptoniteDove да, спасибо за примечание, я изменю его. – undefined

0

Ну, вам нужно что-то наведите курсор мыши, чтобы заставить его работать, поэтому .none нужно будет иметь фактический размер для вас, чтобы получить немного MousePointer штуковина над ним, но что-то вроде этого, может быть:

$('.none', '#HoldsAll').on({ 
    mouseenter: function() { 
     $('p', this).show(); 
    }, 
    mouseleave: function() { 
     $('p', this).hide();  
    } 
});​ 

FIDDLE

+0

Итак, если .none имеет отображение правила CSS: none, событие не будет применяться? Если да, должен ли я изменить CSS и использовать .hide, чтобы затем использовать .show или .toggle? Моя основная проблема заключается в том, что действие триггера (зависание, щелчок над div) происходит в div, который состоит из нескольких div и внутри и вне цели события. Поэтому мне нужно выйти из div, найти целевой div, применить событие. Это пнула мою задницу, но опять же, я не ниндзя. – navarro