有什么方法可以知道点击是来自“触发器”还是实际点击?

时间:2013-09-24 07:51:34

标签: javascript jquery

我有一个奇怪的情况。我正在编辑一个页面,这是一个动人的部分。

无论如何,我有一个对话框(弹出窗口),它被绑定(通过对话框创建类)到一个正文单击处理程序。基本上,如果您单击页面上的任何位置,它将关闭。好的,很棒。

这是擦。页面上还有另一个运行" $(body).trigger(' click')"。这是一个问题,因为在这种情况下,我不希望我的特定对话框关闭。

我进行了一些测试,它们看起来完全相同 - 1.)通过触发器生成点击 2.)并实际点击页面正文。

有没有明显的方法可以知道点击是否是假的"触发通话或真实点击'事件?由于在触发的点击中没有任何东西在冒泡,是否有任何方式以某种方式试图查看页面上是否有子元素来查看它是否冒泡或什么?

我希望我的解释能够简明扼要。

1 个答案:

答案 0 :(得分:3)

HTML:

<input type="button" id="button" value="click me" />

JS:

$("#button").on("click", function(e) {
    if(typeof e.isTrigger == 'undefined') {
        console.log("clicked");
    } else {
        console.log("triggered");
    }
});

setTimeout(function() {
    $("#button").trigger("click");
}, 1000);

演示:http://jsfiddle.net/wXnwp/1/

jQuery 1.6的版本=&gt; http://jsfiddle.net/wXnwp/3/

$("#button").click(function(e) {
    if(typeof e.ctrlKey !== 'undefined') {
        console.log("clicked");
    } else {
        console.log("triggered");
    }
});

setTimeout(function() {
    $("#button").trigger("click");
}, 1000);