我试图隐藏一个div,如果用户单击任何地方,但弹出或它的孩子。这是我到目前为止的代码:
$("body").click(function(){ var $target = $(event.target); if(!$target.is(".popup") || !$target.is(".popup").children()){ $("body").find(".popup").fadeOut().removeClass('active'); } });
它适用于.popup div,但如果它的孩子被点击,它隐藏它。
解决方法
你真的可以简化这一点我想:
// If an event gets to the body $("body").click(function(){ $(".popup").fadeOut().removeClass("active"); }); // Prevent events from getting pass .popup $(".popup").click(function(e){ e.stopPropagation(); });
单击弹出窗口或其任何子项将导致传播在到达身体之前停止。
停止事件传播的演示:http://jsbin.com/ofeso3/edit