1

jquery .mouseup()を使用して、ユーザーがpopopの外側をクリックしたときにpopopを閉じています。私の問題は、これが初めて使用されたときにのみ機能することです。私はその.on()バージョンを試しましたが、それは役に立ちません。

$(document).ready(function() {
    $(document).mouseup( function(e) {
      var container = $("#mpop-loop");
      if (container.has(e.target).length === 0) {
        container.fadeOut("fast").remove();
      }
    });
});

$(document).ready(function() {
    $(document).on("mouseup", function(e) {
      var container = $("#mpop-loop");
      if (container.has(e.target).length === 0) {
        container.fadeOut("fast").remove();
      }
    });
});

トリガーされるたびにこれを機能させるにはどうすればよいですか?

4

3 に答える 3

0
$('body').click(function(){

    $("#mpop-loop").fadeOut("fast");

});

「#mpop-loop」を削除すると、コンテナを再度開いたときにイベントを再度追加する必要がある場合があります。

于 2013-01-17T14:39:46.513 に答える
0

「on」関数の委任を使用し、「:not(.popup-class)」フィルターを使用して、クリックイベントをポップアップ以外のページ上のすべての要素に委任してみてください。クリックされたポップアップが同様にクローズをトリガーしないように考えてみてください。

于 2013-01-17T14:48:56.507 に答える
0

.has要素自体を無視して、子孫でのみ機能します。$(document).readyこれを試してください(とにかくイベントをドキュメントにバインドしているので必要ありません):

    $(document).on("mouseup", function(e) {
      var container = $("#mpop-loop");
      if (!container.has(e.target).length && !container.is(e.target)) {
        container.fadeOut("fast");
      }
    });

http://jsfiddle.net/mblase75/bWDXH/

于 2013-01-17T14:55:33.447 に答える