Javascript jstree:区分鼠标左键/中键单击

Javascript jstree:区分鼠标左键/中键单击,javascript,jstree,Javascript,Jstree,下面的代码设置了我的树(s:property标记是struts2 stuff): $(函数(){ $(“#网络树”).jstree({ “json_数据”:{ “ajax”:{ “url”:” } }, “插件”:[“主题”、“json_数据”、“ui”], “主题”:{ “主题”:“默认”, “点”:没错, “图标”:错误 }, “核心”:{ “html_标题”:正确 } }).bind(“select_node.jstree”,函数(事件、数据){ window.location.href=

下面的代码设置了我的树(
s:property
标记是struts2 stuff):

$(函数(){
$(“#网络树”).jstree({
“json_数据”:{
“ajax”:{
“url”:”
}
},
“插件”:[“主题”、“json_数据”、“ui”],
“主题”:{
“主题”:“默认”,
“点”:没错,
“图标”:错误
},
“核心”:{
“html_标题”:正确
}
}).bind(“select_node.jstree”,函数(事件、数据){
window.location.href=“”+”?companyId=“+data.rslt.obj.attr(“id”);
})
});
当用户左键单击一个树项目时,窗口URL会根据companyDetailsUrl的不同而变化。到目前为止是正确的,但我希望浏览器(chrome)像往常一样单击鼠标中键时在新选项卡中打开链接。似乎任何鼠标单击都会选择树节点,这将触发绑定事件,该事件将替换window.location。最好的预防方法是什么

我选择eventhandler的-属性。
根据jQuery文档,这提供了一种区分按钮的简单方法:

事件。该事件还规范化按钮按下(鼠标向下和鼠标移动事件),左按钮报告1,中按钮报告2,右按钮报告3

请注意,您必须替换
您的URL
(显然)。为了便于阅读,我省略了它

进一步注意,这很可能会打开一个新窗口,而不是一个新选项卡。为了进一步了解为什么它会打开一个新窗口以及如何打开一个新选项卡,我建议阅读

$(function () {
       $("#networkTree").jstree({ 
          "json_data" : {
             "ajax" : {
                "url" : "<s:property value='networkTreeDataUrl'/>"
             }
          },
          "plugins" : [ "themes", "json_data", "ui" ],
          "themes" : {
                "theme" : "default",
                "dots" : true,
                "icons" : false
          },
          "core" : {
              "html_titles" : true
           }
       }).bind("select_node.jstree", function (event, data) {
              window.location.href = "<s:property value='companyDetailsUrl'/>" + "?companyId=" + data.rslt.obj.attr("id");
              })
});
//rest of the code omitted
.bind("select_node.jstree", function (event, data) {
    if(event.which == 1) {
        //open link in current window
        window.location.href = YOURURL;
    } else if (event.which == 3) {
        //open link in new window
        window.open(YOURURL, '_blank');
    }
 })