我目前正在研究(这里有一个回购)一个超树图,我想从JavaScript InfoVis工具包中使用它。问题如下:我将特定的事件添加到Hypertree中,即onClick
和onRightClick
。
Events: {
enable: true,
onClick: function(node, eventInfo, e) {
ht.controller.onComplete();
},
onRightClick: function(node, eventInfo, e) {
ht.controller.onComplete();
},
},
然后我简单地将事件处理程序附加到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中。现在我加载页面…我有左键。但是没有右键点击……我希望RightClicks移动图形和onClicks打开一个链接从DOM元素节点。谁能给我点提示吗?
最好的,马吕斯
$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来达到这个目的,所以你可以删除这些代码
我在"Events"部分看到的唯一错误是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的作者,因为我也很有兴趣看看是否有可能连接鼠标右键