我需要关闭一些弹出窗口,点击其后。 为此,我使用以下代码:
$(document).click(function(e){
var target = $(e.target);
if (target.is('div.date_body') || target.is('div.date_header') || target.is('div.date_header button') || target.parents('.popuplayout').length)
return;
$(document).unbind('click', arguments.callee);
scope.callFadeOut();
scope.accept();
});
但现在,有必要放弃通过的论点。 也许有人可以建议一种方法来实现它?
答案 0 :(得分:0)
好的,这里的代码应该或多或少地做同样的事情,使用event
也可能是最好的调用,即使Angular返回event
对象。
点击一次查看do nothing
,请注意由于事件传播而多次触发,您需要访问event
才能停止播放。
如果您删除了<div class="popup_layout"></div>
,请运行jsfiddle并单击它将仅在此处输出do stuff
,因为我们取消绑定处理程序。
HTML - 根据您的JS
生成猜测<div>
<div class="date_header">
<button>Button</button>
</div>
<div class="date_body"></div>
<div class="popup_layout"></div>
</div>
JS
// Basically target all elements but not the one we want to ignore
var selector = "*:not(.date_header, .date_header button,.date_body)";
$(selector).on("click", function() {
// the popup layout check
if ($(".popup_layout").size()) {
console.log("do nothing");
return;
}
$(selector).unbind("click");
// your scope stuff here
console.log("do stuff");
});