可視性が非表示になっている複数のメニュー (フォーム) があり、アイコンのクリックイベントでそれらを開きます。前のメニューがまだ開いているときに別のメニューを開くと、両方とも表示されたままになります。だから、新しいメニューが開いているときに元のメニューを非表示にしたい。
HTML
<span id='settingsIcon' class='settingsIcon'>S
<div class='settingForms'>
<div class='formMoveButton'>
<span class='settingsMakePublicIcon'>w</span>
<form action='' method='post' class='moveForm'>
<input class='settingsMakePublicButton' type='submit' value='Make public ' name='$this->move'/>
</form>
</div>
</div>
</span>
jQuery
$(".settingsIcon").click(function(event) {
event.stopPropagation();
if($(document).find(".settingForms").is(':visible') < 1) {
HandleSettingsWindow($($(this).children()[0]));
} else {
}
});
HandleSettingsWindow = function (el) {
$(document).click(function () { // Close the menu when clicked outside it
el.hide();
document.oncontextmenu = function () { return true; };
});
el.toggle();
}