0

可視性が非表示になっている複数のメニュー (フォーム) があり、アイコンのクリックイベントでそれらを開きます。前のメニューがまだ開いているときに別のメニューを開くと、両方とも表示されたままになります。だから、新しいメニューが開いているときに元のメニューを非表示にしたい。

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();
}
4

2 に答える 2

0

問題はこの行にあります

if($(document).find(".settingForms").is(':visible') < 1)

<1の必要はありません、あなたはただ使うことができます

if($(document).find(".settingForms").is(':visible'))
于 2012-11-07T09:37:55.677 に答える
0

これを試してください:http://jsfiddle.net/RttT5/

ノート if($(document).find(".settingForms").is(':visible'))

休息があなたのニーズに合っていることを願っています:)

コード

$(".settingsIcon").click(function(event) {
    event.stopPropagation();

    if($(document).find(".settingForms").is(':visible')) {
        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();
}​
于 2012-11-07T09:35:15.047 に答える