模拟$(文件)。点击(功能(e),不参考活动

时间:2014-07-29 09:49:33

标签: jquery

我需要关闭一些弹出窗口,点击其后。 为此,我使用以下代码:

$(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();
});

但现在,有必要放弃通过的论点。 也许有人可以建议一种方法来实现它?

1 个答案:

答案 0 :(得分:0)

好的,这里的代码应该或多或少地做同样的事情,使用event也可能是最好的调用,即使Angular返回event对象。

http://jsfiddle.net/6T4Rn/

点击一次查看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");
});