以下代码设置了我的树(s:property
标签是struts2的东西):
$(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");
})
});
当用户左键单击树项时,窗口URL会根据 companyDetailsUrl 而更改。到目前为止是正确的,但我想像往常一样点击鼠标中键时,浏览器(chrome)在新选项卡中打开链接。似乎任何鼠标单击都会选择树节点,这会触发替换window.location的绑定事件。防止这种情况的最佳方法是什么?
答案 0 :(得分:2)
我会去找事件处理程序的which - 属性 根据jQuery文档,这提供了一种区分按钮的简便方法:
event.which也标准化按钮按下(mousedown和mouseupevents),报告左按钮1,中间2,右3。
//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');
}
})
请注意,您必须替换YOURURL
(显然)。为了便于阅读,我省略了它。
进一步请注意,这很可能会打开一个新的窗口,而不是新的标签。如需进一步阅读为什么打开新窗口以及如何打开新标签页,我建议您阅读this question。