jQuery problem
4 naročniki
4 naročniki
Že kakšno uro poskušam usposobiti jQuery efekt, pa mi google ne pomaga kaj dosti. Težava je sledeča... imam 2 diva, enega nad drugim. V prvem je link <a>, ki mora ob mouseover prikazati spodnji div, ki je neviden. Težava je, kdaj se ta div skrije. Rad bi, da je div viden dokler se miš nahaja na prvem ali drugem divu.
Predvidevam da obstaja preprosta rešitev ampak je na žalost ne najdem.
Prilagam kodo.
$('a.show_box_2').live('mouseover mouseenter', function()
{
$("#box_2").slideDown();
});
$('#box_2').live('mouseout mouseleave', function()
{
$("#box_2").slideUp();
});
<div id="box_1">
Napis
<a class="show_box_2">Show</a>
</div>
<div id="box_2" style="display:none">
Text
</div>
Ta koda normalno prikaže 2. div, zapere pa ga že ko pridem z miško na njega.
Pozna kdo rešitev? Hvala
4 odgovori
ja, preveri e.Target
- naredi test case na http://jsfiddle.net/
- taka vprasanja se ti velik bolj splaca prasat na stackoverflow
Poskušaj s tem (malo sem prečistil kodo iz enega mojega menija):
var mmto;
$('#div1,#div2,#div1 a').mouseleave(function () {
mmto = setTimeout(function () {
$('#div2').slideUp(400);
}, 300);
})
.mouseenter(function () {
if (mmto) mmto = clearTimeout(mmto);
$('#div2').slideDown(400);
});
HTML:
<div id="box_1">
<strong>Napis</strong>
<a class="show_box_2">Show</a>
<div id="box_2" style="display:none">
Text
</div>
</div>
Jaz sem tale hidden container kar vgnezdil, je pa seveda odvisno od tvoje situacije.
JS:
$('a.showbox2').live('mouseover mouseenter', function()
{
$("#box_2").slideDown();
});
$('#box1').live('mouseleave', function()
{
$('#box2').slideUp();
});
Zdej, ker je zadeva vgnezdena, lahko event kličem kar na #box_1. Kakorkoli, men se načeloma zdi, da ti zadeva nagaja, ker si zgoraj uporabil tako "mouseout" kot "mouseleave" eventa, mouseout == event bubbling == ponavad ne dela.