添加onRightClick到JavaScript lib Hypertree

时间:2013-05-04 10:13:13

标签: javascript onclick infovis

我目前在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节点的链接。有人可以给我一个指针吗?

最佳, 的Marius

3 个答案:

答案 0 :(得分:1)

我在“事件”部分中可以看到的唯一错误是onRightClick背后的尾随逗号。如果你使用IE> 8,它确实不应该影响代码,但它值得一试。

答案 1 :(得分:1)

好的,这是我认为你的解决方案不起作用的答案。

$jit.util.addEvent(domElement, 'rclick', function ()

没有'rclick'这样的jquery事件。

通常使用jquery,你会detect a right-click使用以下内容:

$('#element').mousedown(function(event) {
 if (event.which === 3) { 
  alert('Right mouse button pressed');
 }
});

因此,在您的示例中,您将使用“mousedown”而不是“rclick”。但是,查看addEvent的文档:

$jit.util.addEvent(elem, 'click', function(){ alert('hello'); });

该示例似乎表明事件对象无法传入addEvent的函数参数,这意味着无法检测到鼠标右键被单击。

可能值得直接将您的问题发布给InfoVis的作者,因为我也有兴趣看看是否可以连接鼠标右键。

答案 2 :(得分:1)

$ jit.util.addEvent(obj,type,fn)是obj.addEventListener(type,fn,false)的快捷方式。所以你试图绑定到'onrclick'事件。但是javascript中没有这样的事件。要检测右键单击,您只需将'rclick'替换为'mouseup',在回调中,您应该检查按钮是否正确。这是代码:

$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,因此您可以删除该代码