document.location奇怪的行为? / alternative jsTree链接解决方案?

时间:2013-10-02 13:20:42

标签: javascript jquery jstree

我使用jQuery.jsTree构建了一个菜单,每个项目都应包含指向特定页面的链接。使用jsTree,由于阻止了

的标准行为,因此无法单击这些链接
<a href="index.php?content=example" ... >....</a> 

链接(这实际上是我的一个链接的示例.index.php是我的标准页面,只是内容将被替换)。为了解决这个问题,我找到了这个解决方案:

jQuery(".tree").bind("select_node.jstree", function (e, data) {
    document.location = data.rslt.obj.children("a").attr("href");
});

这个解决方案部分适用于我,这意味着点击的链接可以工作,但在打开的窗口中,Firebug告诉我jQuery没有定义。是否有可能在document.location上浏览器“忘记”库导入(正如我所提到的,我留在index.php页面上只是替换内容)?

另一个问题是:是否有人可能知道更好的解决方案,无需编辑库本身就可以在jsTree中启用链接?

提前感谢!

1 个答案:

答案 0 :(得分:1)

如果您的链接最初看起来像:

<a href="index.php?content=example" ... >....</a> 

您希望将内容加载到ID为maincontent

的div中

您可以执行以下操作:

$(".tree a").each(function(){
  var $this = $(this);
  $this.click(function(){
     $("#maincontent").load($this.href, function(){
        // this callback functions fires once load is complete,
        // incase you need to do post-load operations
     });
     return false;
  });
});

这将byposs将新页面加载为普通链接,并通过AJAX获取页面并将返回的HTML加载到ID为DIV的{​​{1}}。

代码未经测试,但我过去已经这样做了,所以应该按原样运作。