如何确定单击了哪个小部件?道场

时间:2016-09-13 21:18:04

标签: javascript dojo

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

所以基本上我希望我可以做这样的事情(在页面的任何地方点击鼠标)

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

2 个答案:

答案 0 :(得分:1)

可能会有很多开销,但是你可以

require(["dojox/mobile/deviceTheme","dojo/on","dijit/registry"],function(theme,on,reg){
    on(document,'click', function(e){
    console.log(e.target);
    var widget = reg.byNode(e.target);
    console.log("foundWidget::" + widget.id);
  });
});

答案 1 :(得分:1)

你可以,但需要一些额外的步骤 基本上,逻辑是: - 当您单击某个节点时,您必须进入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事件。