我使用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();
}
});
});
如何在每次触发时都能完成这项工作?
答案 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");
}
});