javascript - 有什么方法可以知道点击是来自 "trigger"还是实际点击?

标签 javascript jquery

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

无论如何,我有一个对话框(弹出窗口)绑定(bind)(通过对话框创建类)到主体点击处理程序。基本上,如果您单击页面上的任意位置,它就会关闭。好的,太好了。

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

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

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

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

最佳答案

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);

关于javascript - 有什么方法可以知道点击是来自 "trigger"还是实际点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18975870/

相关文章:

javascript - meteor.js 模板助手作为变量与键+值

javascript - 从两个不同的类导入时, Electron 应用程序会复制变量......?

Javascript错误未定义不是一个函数

javascript - JQuery stopPropogation with .on ('click' ) 绑定(bind)不工作

php - 基于标签显示图像 - jQuery Datatables

jquery - 动画滚动到顶部

javascript - 滑轨方式鼠标悬停或悬停,然后鼠标移回 post.image

javascript - 如何从复制任务中调用 grunt 提示任务?

jquery - 使用 jQuery 创建 Silverlight 容器 - 在 IE9 中不起作用

javascript - 混合了我需要为我的 div 分开的 html 样式