Lösung1
Anstatt event.stopPropagation() zu verwenden, was einige Nebeneffekte haben kann, definieren Sie einfach eine einfache Flag-Variable und fügen eine hinzu if
Zustand. Ich habe dies getestet und es hat ohne Nebenwirkungen von stopPropagation funktioniert:
var flag = "1";
$('#menucontainer').click(function(event){
flag = "0"; // flag 0 means click happened in the area where we should not do any action
});
$('html').click(function() {
if(flag != "0"){
// Hide the menus if visible
}
else {
flag = "1";
}
});
Lösung2
Mit nur einem einfachen if
Zustand:
$(document).on('click', function(event){
var container = $("#menucontainer");
if (!container.is(event.target) && // If the target of the click isn't the container...
container.has(event.target).length === 0) // ... nor a descendant of the container
{
// Do whatever you want to do when click is outside the element
}
});