mouseout к дочернему элементу
Хочу сделать так чтобы при наведении на блок див id="id1"
Появлялся блок с id="id2" внутри которого блок с id="id3". Все отлично появляться, блок с id="id2" по ширине и высоте больше своего дочернего блока id="id3", и стоит событие: $('#id2').mouseout(function(){ $(this).hide(); }); Но беда в том что если курсор попадает на дочерний элемент $('#id2') то событие mouseout все равно срабатывает. Как быть? как ему объянить что оно должно срабатывать только если уйдет с #id2 но не на дочерний элемент? |
Так не пойдет?
<style>
div{
padding: 10px; border: 1px solid red;
}
#id1 #id2{
display: none;
}
#id1:hover #id2{
display: block;
}
</style>
<div id="id1">#id1
<div id="id2">#id2
<div id="id3">#id3</div>
</div>
</div>
|
Там вот такая структура:
<div id="id1">#id1</div> <div id="id2">#id2 <div id="id3">#id3</div> </div> |
т.е. вот:
Код:
http://zakaz-viagra.ru/product/dzhenerik_viagra |
Так чтоле?
<style>
div{
padding: 10px; border: 1px solid red;
}
#id2 #id3{
display: none;
}
#id2:hover #id3{
display: block;
}
</style>
<div id="id1">#id1</div>
<div id="id2">#id2
<div id="id3">#id3</div>
</div>
|
Неа, при наведении на id1 должно появляться id2 с id3 (id3 который внутри id2) и только после отведения мышки с id2 они должны исчезать. Единственное что можно смухлевать это сделать поситион абсолуте и наложить на id1 но внутрь id1 не втыкать.
|
Да ё моё. Так?
<style>
div{
padding: 10px; border: 1px solid red;
}
#id1 + #id2{
display: none;
}
#id1:hover + #id2{
display: block;
}
</style>
<div id="id1">#id1</div>
<div id="id2">#id2
<div id="id3">#id3</div>
</div>
|
Уже близко =)
Так но чтобы исчезало не когда уходит с #id1 а когда уходит с #id2 вот =) |
<style>
div{
padding: 10px; border: 1px solid red;
}
#id1 + #id2{
display: none;
}
#id2:hover, #id1:hover + #id2{
display: block !important;
}
</style>
<div id="id1">#id1</div>
<div id="id2">#id2
<div id="id3">#id3</div>
</div>
Хотя возможно тут нужно использовать не css, а javascript.. |
Нужно было начать по другому. Вообщем най сайте есть кнопка "лайкни!" при наведении на нее вылезает блок, в котором блок с соц кнопками и когда мышь уходить с этого блока то он исчезает и следовательно блок содержавшийся в нем (т.е. соц. кнопками) тоже. Все сделал, но проблема что в блоке который содержит блок с соц. кнопками, при наведении на соц. кнопками (дочерний его) срабатывает событие mouseout хотя вроде дочерний блок и не должно срабатывать.
|
да вроде верно все пашет, а через js как это реализовать?
|
ntro123, нужно пользоваться поиском по форуму, уже раз 4й отвечаю на подобную тему, на js это делается так
function hover (opt) {
opt.elem.onmouseover = ElemMouseAction;
opt.elem.onmouseout = ElemMouseAction;
function ElemMouseAction (evt) {
var related, Call;
var e = evt || event;
if(e.type == 'mouseover'){
Call = opt.over;
related = e.relatedTarget || e.fromElement;
} else {
Call = opt.out;
related = e.relatedTarget || e.toElement;
}
while (related && related != this) {
related = related.parentNode;
}
if(related == this) return;
Call.call(this,e);
}
}
hover({
elem:document.getElementById('#bla'),
over:function () {// срабатывает при mouseover
},
out:function (){// срабатывает при mouseout
}
});
|
Вот на jQuery, раз уж подключена к странице:
<style>
div{
padding: 10px; border: 1px solid red;
}
#id2{
display: none;
}
</style>
<div id="id1">#id1</div>
<div id="id2">#id2
<div id="id3">#id3</div>
</div>
<script src="//code.jquery.com/jquery-latest.js"></script>
<script>
(function($){
$('#id1').mouseenter(function(e) {
$('#id2').fadeIn();
});
$('#id2').mouseleave(function(e) {
$(this).fadeOut();
});
})(jQuery)
</script>
|
Все спасибо!
|
Упростил код немного. Перепутал события.
|
| Часовой пояс GMT +3, время: 02:56. |