1

我有一个奇怪的情况。我正在编辑一个包含大量移动部件的页面。

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

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

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

有什么方法可以知道点击是“假”触发调用还是真正的“点击”事件?由于在触发的点击中没有任何东西冒泡,是否有办法以某种方式尝试查看页面上是否有一个子元素来查看它是否冒泡或其他什么?

我希望我的解释足够简洁。

4

1 回答 1

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 的版本 => 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);
于 2013-09-24T07:57:35.523 回答