2010-12-10 4 views
0

Ich habe ein Ziel <div class="outter"> und andere <div class="inner"> als Tooltip,Hover-Effekt und Funktion in Jquery

<div class="outter"></div> 
<div class="inner"></div> 

in Standard der Tooltip unsichtbar ist, wenn ich die Maus schweben auf dem „outter“, wird die „innere“ erscheinen im "outter" eins, bis man den "outter" aussticht, wird das "innere" verschwinden.

$(".outter").hover(function(){ 
    var $top=$(".outter").offset().top; 
    var $left=$(".outter").offset().left; 

    $('.inner').css({'top':$top+10+'px','left':$left+10+'px'}).show(); 
},function(){ 
    $('.inner').hide(); 
}) 

aber, wenn die Maus nicht aus dem „outter“ ausrücken hat, zugleich Maus auf dem „inneren“ in „outter“, das Problem geschieht: die innere geflasht, nicht stabil

the online case here

Also, was ist los mit dem Fall?

Ich möchte die innere wäre stabil, nicht die flashed.Please Hilfe, danke :)

Antwort

2

Wenn es eine Option ist, ist die einfachste Lösung, Ihre Elemente wie sie genannt zu verwenden:

<div class="outter"> 
    <div class="inner"></div> 
</div> 

... dann funktioniert Ihr aktueller Code gut, da der mouseleave nicht ausgelöst wird, wenn Sie das .inner Element eingeben, da es ein Kind ist. You can test it here.

+0

Ich weiß, das "innere" in "outter" wird das Problem lösen, aber es gibt viele div auf meiner Seite, der Tooltip wird Adapter zu jedem div, also wenn jedes div einen Tooltip hat, denke ich, dass es nicht gut ist ...... – hh54188

+0

@ hh54188 - Was ist das Problem, wenn man sie hineinlegt? Wenn Sie * nicht *, sollten Sie zumindest die verwendeten Klassen umbenennen :) –

+0

Sie hinein zu stellen ist kein Problem. Was ich meine ist, dass jedes div auf meiner Seite einen Tooltip braucht, und viele von ihnen sind üblich. So wenn ich einen Tooltip in jedem div, es eine Verschwendung von HTML-Code ......:) setzen Sie mich erinnern, ich kann mit dem "appendTo" an die Div, die ich brauche, zuerst, dann führen Sie die Hover-Funktion ...... – hh54188

0

Dies ist vielleicht nicht die ideale Lösung sein, sondern versuchen, diese ein

$(".outter, .inner").hover(function(){ 
    var $top=$(".outter").offset().top; 
    var $left=$(".outter").offset().left; 

    $('.inner').css({'top':$top+10+'px','left':$left+10+'px'}).show(); 
},function(){ 
    $('.inner').hide(); 
}) 

updated demo