JavaScript mouseover/mouseout-Problem mit child-element
Habe ich dieses kleine problem und ich bitte um Ihre Hilfe.
Ich habe eine div element, in dem ich eine img element, wie dies
<div id="parent" onmouseover="MyFuncHover()" onmouseout="MyFuncOut()">
<img id="child" src="button.png" style="visibility: hidden" />
</div>
<script type="text/javascript">
function MyFuncHover() {
//Here I have some code that makes the "child" visible
}
function MyFuncOut() {
//Here I have some code that makes the "child" invisible again
}
</script>
Als Sie, sehen, das Bild ist ein Kind der div. Ich will das nur wenn ich aus der div, das Kind zu verschwinden. Doch wie es aussieht, wenn ich mit der Maus über das Bild, das MyFuncOut () - Funktion aufgerufen wird (denn ich nehme an, ich lasse das div, indem man die Maus im Bild). Ich will nicht, dass das passiert. Ich will die MyFuncOut() Funktion nur aufgerufen werden, wenn ich lassen Sie die div Bereich.
Ich wusste nicht, dass, wenn Sie mit der Maus über ein Kind, Kontrolle, Eltern fordert, das mouseout-Ereignis (auch wenn ich mich über das Kind, ich bin immer noch über die Eltern auch). Ich bin in diese Falle geraten und ich brauche ein wenig an Ihre gute Beratung. Danke!
ÄNDERUNGEN
O. K. Ereignis-bubbling " nicht senden "mouseout" - Ereignis an die Muttergesellschaft, wenn ich "mouseout", das Kind. Es wird auch nicht senden die "mouseover" - Ereignis an die Muttergesellschaft, wenn ich "mouseover", das Kind. Das ist nicht das, was ich brauche. Ich brauche das "mouseout" - Ereignis des Elternteils, der nicht gesendet werden, wenn ich "mouseover", das Kind. Es bekommen? Ereignis-bubbling ist nützlich, wenn ich nicht will, zum Beispiel ein click-Ereignis auf das Kind weitergegeben werden an die Eltern, aber das ist nicht mein Fall. Was ist komisch ist, dass ich andere Elemente, die im inneren die gleichen Eltern, die kein Feuer, das "mouseout" - Ereignis des Elternteils, wenn ich "mouseover".
InformationsquelleAutor ali | 2012-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
können Sie "mouseenter" und "mouseleave" Ereignisse in jquery, hier ist der code unten,
oben ist, befestigen Sie ein Ereignis,
Sie sind erhältlich in den Prototyp als auch durch die Art und Weise ...
Yeah ! es funktioniert Super ! 😀
mouseleave ist eigentlich ein einfachen javascript-event, so können Sie ignorieren die jQuery-Teil und es einfach verwenden, direkt. der einzige Unterschied zwischen ihm und mouseleave ist es nicht die Blase, so dass das Kind mouseleave wird nicht dazu führen, die Eltern, die zum gleichen Ereignis.
InformationsquelleAutor Vishal Gowda
Können Sie die folgende Lösung, welche es ist reines javascript und ich mit Erfolg verwendet.
Ich hoffe, es hilft.
InformationsquelleAutor Pedro Alvares
Nur eine if-Anweisung hinzufügen Ihre MyFuncOut Funktion, die überprüft, das Ziel ist nicht die Bild
hier ist eine demo, jsfiddle.net/HvMjN/4 mit der Methode die ich oben gesprochen wurde etwa. Es stellt sich heraus, das moderne Ereignis mouseout und mouseenter haben die Verhalten Sie ursprünglich erwartet, so dass Sie können verwenden Sie Ihre code-ändern Sie einfach die event-Typen, jsfiddle.net/HvMjN/6
Danke Mann, das problem ist nur, es funktioniert nicht auf IE6 (Fehler: Objekt unterstützt keine Eigenschaft oder Methode 'addEventListener'). Doch, ich denke, dass kann gelöst werden, indem die direkt übergeordnete.onmouseover
suchen Sie einfach cross-browser-Veranstaltung verbindlich. ie6 verwendet attatchEvent
InformationsquelleAutor Jake
Ich habe Probleme mit diesem zu und konnte es nicht bekommen, um zu arbeiten. Dies ist, was ich Tat, statt. Es ist viel einfacher und ist nicht JavaScript, so dass es schneller und kann nicht ausgeschaltet werden.
Können Sie auch die CSS3-transition für die Deckkraft, um es geben eine glattere Gefühl.
Ich brauche bei der Arbeit mit IE6 auch. Dank
Dies funktioniert auch in IE6
Stellt Deckkraft und filter arbeiten auf IE6? Ich dachte, das ist es nicht.
Dieser filter:alpha(opacity="100"); ist für den IE, die andere für alle anderen browser.
InformationsquelleAutor Spencer May