我目前在Hypertree图上工作(回购邮件是here),我想在JavaScript InfoVis Toolkit中使用它。问题如下:我向Hypertree添加了特定事件,即onClick
和onRightClick
。
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
答案 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,因此您可以删除该代码