2011-05-20 71 views
5

我目前使用dynaTree jQuery插件渲染树。如何使dynaTree jQuery插件中的超链接可点击?

<div id="tree" style="height:100px;"> 

<ul class="expanded"> 

    <li class="expanded" id="shtml_1" > 
     <a class="ajaxify" href="jsTree.html" >Root node 1</a> 
     <ul> 
      <li id="shtml_2"> 
       <a href="#">Child node 1</a> 
       <ul> 
       <li id="a"><a href="#">Child node 1-1</a></li> 
       <li id="x"><a href="b">Child node 1-2</a></li> 
       </ul> 
      </li>    
      <li id="c"><a href="#">Child node 2</a></li> 
     </ul> 
    </li> 
    <li id="shtml_4"> 
     <a href="#">Root node 2</a> 
    </li> 
</ul> 

使用Javascript -

$('.ajaxify').ajaxify({ 
    target: '#container' 
    }); 

    $(function(){ 
    $("#tree").dynatree({ 
     title: "Sample Theming", 
     // Image folder used for data.icon attribute. 
     imagePath: "skin-custom/", 
     onSelect: function(node) { 
     alert ("You selected " + node); 
     } 
    }); 
    }); 

现在我想

  • 使用的jQuery插件Ajaxify(http://max.jsrhost.com/ajaxify/demo。 php),这样当用户点击任何节点时,ajax调用就会被完成,并将结果加载到div中。

或者

  • 绑定使用jQuery的锚标记,这样我可以做的onclick Ajax请求。

现在,无论何时我使用dynaTree,它都会覆盖默认行为并防止锚点标记被点击。有关如何做到这一点的任何想法?

回答

8

Dynatree将默认删除<a>标签,所以它是possbly更容易实现的onActivate处理程序:

onActivate: function(node) { 
    if(node.data.href){ 
     // use href and target attributes: 
     window.location.href = node.data.href; 
//  window.open(node.data.href, node.data.target); 
//  $("#div").load(node.data.href); 
    } 
} 

与版本1.1.2开始,Dynatree将使用hreftarget<a>标签属性直接:

<li id="x"><a href="b">Child node 1-2</a></li> 

在旧版本中,您必须设置href的:

<li id="x" data="href: 'b'"><a href="b">Child node 1-2</a></li> 
+0

谢谢。我们如何将它与Ajaxify之类的插件整合起来? – Pushkar 2011-05-22 08:42:29

+0

我从来没有使用Ajaxify,但我在他们的页面上发现了一个Demo('与其他插件交互' - 'Flexigrid'),可能指向一个问题。 – mar10 2011-05-27 05:57:23

+0

不幸的是它不适用于dynaTree。所以我必须放弃使用Ajaxify的想法,并在版本注释的onActivate方法dynaTree – Pushkar 2011-05-27 06:52:01