2017-03-28 3 views
0

Ich habe eine menü-taste auf meiner website ("showmenu"), die beim klick öffnet das menü div. Ich habe Code auch, dass das Menü schließt sich, wenn der Benutzer außerhalb davon klickt (die ich hier gefunden)jquery klicken außerhalb div zu schließen, probleme

// code to open/close menu 
$(document).ready(function() { 
    $('#showmenu').click(function() { 
      $('.menu').slideToggle("fast"); 
    }); 

// code for clicking outside menu to close 
$(document).mouseup(function (e) { 
    var container = $('.menu'); 
    if (!container.is(e.target) && container.has(e.target).length === 0) { 
     container.hide(); 
     } 
    }); 

}); 

Dieser Code gibt mir allerdings Problem. Ich kann das Menü mit dem "showmenu" -Knopf öffnen, aber ich kann den Knopf nicht erneut drücken, um es zu schließen. Die einzige Möglichkeit, das Menü zu schließen, besteht darin, außerhalb des Menüs zu klicken.

Irgendwelche Vorschläge?

+0

Und das HTML ist? – epascarello

Antwort

0

Diese Zeile:

container.has(e.target).length === 0 

prüft, ob der Klick-Ziel nicht ein Elternteil des Containerelements ist. Wenn Sie jedoch überprüfen, dass die Länge gleich Null ist, wird dies false ausgewertet, wenn Sie überprüfen möchten, ob es true ist, d. H. Den Container auszublenden, wenn Sie auf eines seiner Eltern geklickt haben.

Außerdem müssen Sie

e.target 

zu

$(e.target) 

zu behandeln es als ein jQuery-Objekt ändern.

Ändern Sie die Zeile zu

container.has($(e.target)).length > 0 

und es sollte funktionieren!

+0

Danke für die Antwort. Ich habe das geändert, und obwohl ich das Menü öffnen und schließen kann, kann ich nicht außerhalb des Menüs klicken, um es zu schließen. – user961882

+0

Siehe meine bearbeitete Antwort. Sie müssen auch e.target in $() einfügen, um es als jQuery-Objekt auszuwählen –

Verwandte Themen