1

私は現在、 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要素ノードからのリンクを開きます。誰かが私にここでポインタを教えてもらえますか?

ベスト、マリウス

4

3 に答える 3

1

わかりました、これはあなたのソリューションが機能していないと思う理由についての答えです。

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

「rclick」のような jquery イベントはありません。

通常、jquery を使用すると、以下を使用して右クリックを検出します。

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

したがって、あなたの例では、「rclick」の代わりに「mousedown」を使用します。ただし、addEventのドキュメントを見ると:

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

この例は、イベント オブジェクトを addEvent の関数パラメーターに渡すことができないことを示唆しているようです。つまり、マウスの右ボタンがクリックされたことを検出することはできません。

あなたの質問を InfoVis の作成者に直接投稿する価値があるかもしれません。私もマウスの右ボタンを接続できるかどうかに興味があります。

于 2013-10-26T21:37:31.833 に答える
1

「イベント」セクションで確認できる唯一の障害は、onRightClick の後ろにコンマがあることです。IE>8 を使用している場合、実際にはコードに影響を与えるべきではありませんが、試してみる価値はあります。

于 2013-10-24T09:41:19.933 に答える