2016-07-27 17 views
0

Sorry für die Frage Titel, ich wusste wirklich nicht, wie man es zusammenfassen eine kurze Beschreibung.jQuery - auf Hover verlassen halten div sichtbar

Im Wesentlichen habe ich eine <ul>, die meine Navigationslinks hat. Jedoch in einem der <li> Links ist meine benutzerdefinierte Dropdown-Warenkorb, um dem Benutzer eine Vorschau ihrer Artikel zu geben.

Jetzt, wenn ich über das Element schweben, möchte ich, dass es den Warenkorb von display:none zu display:block ändert, damit es sichtbar wird. Aber mit meinem Code, sobald ich das Element hovered auf ein Element klicken. Das Dropdown-Menü verschwindet, weil ich nicht länger über dem Element schwebe, das ich in meiner jQuery-Hover-Funktion definiert habe.

Zum Beispiel (quick Blindkode)

$('.hover-on-me').hover(function(){ 
    $('.hover-open').show(); 
},function(){ 
//This right here hides the dropdown 
    $('.hover-open').hide(); 
}); 

Jetzt bin ich nicht die Wetten auf Javascript/jQuery. Ich habe versucht, in der Funktion zu sagen, wenn sich die Maus noch in der Navigationsleiste befindet, verstecke sie nicht oder wenn die Maus sich im Warenkorb befindet, verstecke sie nicht. Ich dachte, das würde mich vom Hover-Element, vorbei an der Navigationsleiste und auf das Dropdown-Menü bewegen, aber es funktioniert nicht. als das Element bleibt dann offen und schließt nicht, wenn ich den Bereich verlasse.

Here is a simple jsfiddle mein Problem demonstrieren.

Danke!

+0

Verwenden Sie toggle() statt show/hide – eronax59

+0

Warum toggle? – virepo

+1

[ein Nicht-Javascript-Weg, dies zu tun] (https://jsfiddle.net/on9wtk2b/11/) –

Antwort

0

Ich denke, es ist nur ein Fehler in Ihrem Klassennamen.

jQuery-Code: -

$('.hover-on-me').hover(function(){ 
     $(this).parent("li").addClass("active"); 
}, function(){ 
    $(this).parent("li").removeClass("active"); 
}); 

dieser Code Sie hinzufügen CSS: -

ul li.active{display:inline-block;} 
ul li.active .hover-open, ul li .hover-open:hover{display:block;} 

Können Sie bitte diese versuchen.

+0

Entschuldigung, ich habe den falschen Code in. Ich habe meine Frage mit richtigen Link jetzt bearbeitet. Sie werden dann sehen, wenn Sie versuchen, auf Hover-Open zu schweben, schließt es – virepo

+0

@virepo Können Sie bitte meine Antwort versuchen? –

+0

Ich werde Ihnen erklären, wenn Sie irgendwelche Probleme damit haben. –

0

die Hover-Syntax wie folgt aussehen .. $ (Selektor) .hover (inFunction, outFunction) und versuchen Sie Ihr Skript wie folgt zu ändern ..

$('.hover-on-me').hover(
function(){ 
$('.hover-open').show(); 
}, 
function(){ 
if(!$('ul').is(":hover") || !$('.hover-open').is(":hover")){ 
    $('.hover-open').hide(); 
} 
} 
); 

OR Funktion verwenden Maus Ereignis ..

$(".hover-on-me") 
    .mouseenter(function() { 
    $('.hover-open').show(); 
}); 

$(".hover-open") 
.mouseleave(function() { 
$('.hover-open').hide(); 
}); 

für weitere Details siehe hier .. https://api.jquery.com/hover/#hover2 und https://api.jquery.com/category/events/mouse-events/

+0

das ist der genaue Code in meiner Frage nur anders formatiert? – virepo

+0

nein versuchen Sie mit diesem, es funktioniert gut .. –

+0

eigentlich es nicht, ich kann meine Maus nicht über Hover-öffnen, bevor es schließt – virepo