2011-09-14 54 views
2

我正在尝试使用JSON生成的jsTree来导航目录结构。目前,我绑定了一个select_node事件来获取选定节点的路径作为字符串,然后将location.hash设置为该路径。这部分实际上工作正常。我的问题是,在我的select_node事件完成之后,立即从url中完全删除哈希,这显然会中断浏览器历史并将用户发送回“索引”页面。这是我目前的代码。我如何防止这种情况发生?jsTree从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 
}) 
+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 

,以确保哈希依然存在。

+0

对不起,我在我的例子中有一个错字。 'path'实际上应该是'window.location.hash'被设置为哪个实际发生的好。问题是马上就会有其他事情在jstree中恢复为无。 – wdh

+0

你可以使用location.search吗?也许jstree需要使用location.hash –

+0

我使用ajax来拉动基于哈希的目录列表,所以没有,我不能。我或者需要停止jstree自动修改哈希(这与我目前的设置没有任何关系,因为没有实际的链接),或者找到其他方法让每个项目链接到它的路径。 – wdh