0

「#settings-icon」という div があります。「#settings-icon」をクリックすると、別の div「#settings-drop-down-wrap」が表示されます。ここで、「#settings-icon」以外の場所をクリックすると「#settings-drop-down-wrap」を非表示にするクリック イベントに if ステートメントを追加しました。しかし、何らかの理由で正しく動作しないようで、何が間違っているのかわかりません。

JSFIDDLE: http://jsfiddle.net/5Zen5/

私のJQuery:

$(document).ready(function () {
    $("#settings-icon").click(function() {
        $("#settings-drop-down-wrap").show();
    });
    $('body').click(function (event) {
        if (event.target.id != 'settings-icon') $("#settings-drop-down-  
 wrap").hide();
    });
});
4

2 に答える 2

1

必要なのは、伝播を停止することです。次のコードを使用します。

$(document).ready(function () {
    $("#settings-icon").click(function(e) {
        $("#settings-drop-down-wrap").show();
        e.stopPropagation()
    });
    $(document).click(function (event) {
        $("#settings-drop-down-wrap").hide();
    });
});

ボディが完全な高さをとらない可能性があるため、イベント リスナーのターゲットをdocumentボディの代わりに変更しました。

コードの問題は、ターゲットが ではなく#settings-icon、彼の子供であることです。あなたの条件は常にfalseになります。

フィドル: http://jsfiddle.net/5Zen5/2/

于 2013-11-12T18:16:35.477 に答える