簡體   English   中英

添加onRightClick到JavaScript lib Hypertree

[英]Add onRightClick to JavaScript lib Hypertree

我正在使用Hypertree圖表工作(repo就在這里 ),我想從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標簽上,只需稍微修改一下演示代碼

//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節點的鏈接。 有人可以給我一個指針嗎?

最好的,馬呂斯

我在“事件”部分中可以看到的唯一錯誤是onRightClick背后的尾隨逗號。 如果你使用IE> 8,它確實不應該影響代碼,但它值得一試。

好的,這是我認為您的解決方案不起作用的答案。

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

沒有'rclick'這樣的jquery事件。

通常使用jquery,您可以使用以下方法檢測右鍵單擊

$('#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的作者,因為我也有興趣看看是否可以連接鼠標右鍵。

$ 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,因此您可以刪除該代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM