javascript - 如何确定哪个小部件被点击?道场

标签 javascript dojo

有没有办法观察鼠标单击事件并确定单击了哪个小部件?

所以基本上我希望我能做这样的事情(鼠标单击页面上的任意位置)

on("click", function (e) {
   //var aWidget = dijit.getEnclosingWidget(e.target);
   //var id = aWidget.id
   //do something based on the widget id
});

最佳答案

可以,但需要一些额外的步骤。
基本上,逻辑是: - 当你点击一个节点时,你必须在 DOM 中向上查找,直到找到具有 widgetId 属性的节点 - 获得后,使用 dijit/registry::byNode 获取该小部件。

如果跳过节点遍历,只有点击小部件的主 domNode 才会找到该小部件。

require(['dojo/on', 'dijit/registry'], function(on, registry){
    on(document, 'click', function(event){
        var target = event.target,
            widget;
        while(!target.getAttribute('widgetId') && target.parentNode) {
            target = target.parentNode;
        }
        widget = registry.byNode(target);
        console.warn(widget);
    });
});

请注意,此方法在页面中加载了 1 个 dojo 实例时才有效。
如果您的页面有多个 dojo 实例,则每个 dojo 实例都必须附加 document click 事件。

关于javascript - 如何确定哪个小部件被点击?道场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39479124/

相关文章:

javascript - 内容切换问题 - 一次 1 个

javascript - Meteor js 的 GridView

javascript - 如何删除 DOJO 数据存储添加到我的已提取项目中的所有额外字段?

javascript - Dojo dgrid,将图标放在插件列树中的每个子行中(PDF、HTML、XSL)

datagrid - 是否可以基于父 div 大小而不是行数来实现 Dojo/Dijit DataGrid 自动高度功能?

Javascript 将 switch 的大小写绑定(bind)到 html 按钮

javascript - jQuery 不能在 HTML 文件中工作

使用 Dojo Dgrid 默认(加载时)对列进行排序

html - Dijit树,如何提高根下有500个子节点的大树的性能

javascript - 递归循环一个 promise ?