.mouseup()只触发一次

时间:2013-01-17 14:35:36

标签: jquery mouseup

我使用jquery .mouseup()在用户点击外部时关闭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();
      }
    });
});

如何在每次触发时都能完成这项工作?

3 个答案:

答案 0 :(得分:0)

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

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

});

如果删除“#mpop-loop”,则可能必须在再次打开容器时再次添加该事件。

答案 1 :(得分:0)

您是否可以尝试使用“on”函数的委托并使用“:not(.popup-class)”过滤器将click事件委托给除弹出窗口之外的页面上的所有元素?只是一个想法,以便点击弹出窗口也不会触发关闭。

答案 2 :(得分: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/