0

HTML コードの先頭に DIV 要素があります

<div id="popup"></div>

その CSSdisplayプロパティはnone初期値に設定されています。特定の HTML 要素をクリックすると、次のようになります。

$('#popup-opener-button').click(function() {
    $('#popup').fadeIn();
});

これは魅力のように機能します。ここで、DIV 自体をクリックする場合を除いて、画面上の任意の場所をクリックすると、この DIV が消えるようにしたいと考えています。私はこれがそれを行うだろうと思った:

$('#popup').siblings().click(function() {
    $('#popup').fadeOut();
});

しかし、ポップアップ div でフェードインするためにクリックしている SPAN は、実際には #popup の兄弟の子であるため、フェードインした直後に即座にフェードアウトします。これを行わない方法はありますか?

4

2 に答える 2

1

非常に多くのイベントバブリングが発生し、疑似セレクターが最速ではないため、重い DOM でこれがどの程度うまく機能するかはわかりませんが、このメソッドは、フィルターで除外するために:not渡すことができるセレクターを使用します。基本的に、ページ上の他のものをクリックして..on( )div#popupfadeOut()

​$(document.body).on('click',':not(#popup)', function(){ $('#popup').fadeOut(); })​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
于 2012-08-06T15:57:29.897 に答える