这里是我的方法:
你需要一个document
事件侦听器在用户单击任何地方时隐藏该框。但是事件监听器是没有必要的,当箱子被隐藏,所以 - 它可以在显示框只加,如:
var box = $('#trigger-box'),
showBox = function (e) {
if (!box.is(':visible')) { // only do that when box is hidden
e.stopPropagation(); // required to prevent document
box.show();
$(document).on('click.showBox', hideBox); // event namescope for easy removal
}
},
然后 - 当盒子被隐藏 - 我们可以删除此事件侦听器,像这样:
var hideBox = function (e) {
var target = $(e.target);
if (target.is(box) || target.closest(box).length) return; // don't close if clicked on box or on anything inside the box
$(document).off('click.showBox');
box.hide();
}
,然后 - 我们可以只添加事件侦听器:
$('#trigger-button').on('click', showBox);
DEMO
首先,摆脱传递给'click'的第二个参数/函数。这个不成立。之后,看看jQuery UI对话框。他们可能会做你想做的。还有很多类似的库可以显示模态对话窗口。 – ThiefMaster
谢谢了。自从我使用切换以来,第二个参数没有做任何事情。 :)但我仍然需要一个最简单的方法来做第二部分。我不想用大型图书馆来实现这一点。 –
也有小的。例如http://www.malsup.com/jquery/block/。但是,如果你不想要模态行为,请参阅adeneo的答案。 – ThiefMaster