jsTree从URL中删除哈希

时间:2011-09-14 18:30:47

标签: javascript jquery jstree

我正在尝试使用JSON生成的jsTree来导航目录结构。目前我正在绑定一个select_node事件以将所选节点的路径作为字符串,然后将location.hash设置为该路径。这部分实际上工作正常。我的问题是,在我的select_node事件完成之后,其他东西会立即从url中删除哈希值,这显然会破坏浏览器历史记录并将用户发送回“索引”页面。这是我目前的代码。我该如何防止这种情况发生?

$('#projects').jstree({
  core: {
    animation: 0
  },
  plugins: ["themes", "json_data", "ui"],
  themes: {
    theme: "gm",
    dots: false
  },
  json_data: {
    ajax: {
      url: '/json/projects',
    },
    progressive_render: true
  }
}).bind('select_node.jstree', function(e, data){
  var path = '#/' + $(this).jstree('get_path', data.rslt.obj, false).join('/')
  window.location.hash = path
})

1 个答案:

答案 0 :(得分:0)

我认为问题代码是这样的:

var path = '/' + $(this).jstree('get_path', data.rslt.obj, false).join('/')

您可以使用

var path = '/' + $(this).jstree('get_path', data.rslt.obj, false).join('/') + location.hash

确保散列仍然存在。