1

ここで解決策を見つけました。stackoverflowで、スクリプトは次のとおりです。

jQuery(document).mouseup(function (e){
    var container = jQuery(".quick-info");
    if (container.has(e.target).length === 0) {
        container.hide();
    }
});

私の試みは:

jQuery('body:has(.quick-info:visible):not(.quick-info)').click(function (e) {
    jQuery(".quick-info").hide();
});

したがって、私のスクリプトは次のことを意味します: .quick-info ではなく body で行われたクリックをキャッチし、body には .quick-info が表示されます。何が問題なのですか?間違ったセレクターかもしれませんか?

更新 1

ラミンソンの回答に基づいています。

jQuery('body > *:not(.quick-info)').click(function (e) {    
    var コンテナー = jQuery(".quick-info");
    if (container.has(e.target).length === 0 && e.target.nodeName != 'A'){
    jQuery(".quick-info").hide();
    }

});

したがって、 > 単一のセレクターのみが選択されています。

e.target.nodeName != 'A' は link で、このウィンドウが開きます。私はクラスか何かをそこに置くことができることを知っています。

4

3 に答える 3

0

または :

jQuery('body:has(.quick-info:visible)').click(function (e){
    if($(e.target).is(".quick-info")) return;
    jQuery(".quick-info").hide();
});

//if($(e.target).hasClass("quick-info")) return;

VisioN のコメントに基づいており、この投稿ではhasClass () が is() で優先されます

于 2012-07-18T06:24:24.700 に答える
0

「外部をクリック」ロジックを機能させようとして、非常に多くの問題が発生しました。私はこのプラグインを見つけました: http://benalman.com/projects/jquery-outside-events-plugin/それは私のためにすべてを解決しました。要素にイベントをバインドするだけです。あなた自身の問題を解決したように見えても、試してみることができます。

于 2012-07-18T08:16:31.643 に答える