我目前正在处理Hypertree图(我想在here中使用它)(存储库为JavaScript InfoVis Toolkit)。问题如下:我将特定事件添加到Hypertree中,这些事件是onClickonRightClick

 Events: {
          enable: true,
          onClick: function(node, eventInfo, e) {
              ht.controller.onComplete();
          },
          onRightClick: function(node, eventInfo, e) {
              ht.controller.onComplete();
          },
      },


然后,我只是将veent处理程序附加到Hypertree标签上,只需稍微修改demo-code即可:

//Attach event handlers and add text to the
  //labels. This method is only triggered on label
  //creation
  onCreateLabel: function(domElement, node){
      domElement.innerHTML = node.name;

      $jit.util.addEvent(domElement, 'click', function () {
          ht.onRightClick(node.id, {
              onComplete: function() {
                  ht.controller.onComplete();
              }
          });
      });


      $jit.util.addEvent(domElement, 'rclick', function () {
          ht.onClick(node.id, {
              onComplete: function() {
                  ht.controller.onComplete();
              }
          });
      });
  },


这很简单。 Hypertree事件的文档位于Options.Events.js中。现在,我加载页面...,并且我有left.clicks。但是没有右键单击。我希望RightClicks可以移动图形,而onClicks可以从DOM Element节点打开链接。有人可以给我指点吗?

最好,
马吕斯

最佳答案

$ jit.util.addEvent(obj,type,fn)是obj.addEventListener(type,fn,false)的快捷方式。因此,您尝试绑定到“ onrclick”事件。但是javascript中没有此类事件。要检测右键单击,您只需将“ rclick”替换为“ mouseup”,然后在回调中应检查button是否为正确的按钮。这是代码:

$jit.util.addEvent(domElement, 'mouseup', function (event) {
   // detecting right button
   if (event.button != 2) {
       return;
   }
   ht.onClick(node.id, {
       onComplete: function() {
           ht.controller.onComplete();
       }
   });
});


另外,您无需为此使用Options.Events.js,因此可以删除该代码

关于javascript - 将onRightClick添加到JavaScript lib Hypertree,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16373134/

10-09 23:39