+ -
当前位置:首页 → 问答吧 → 请教:关于treeview节点展开与收缩的问题?

请教:关于treeview节点展开与收缩的问题?

时间:2009-11-05

来源:互联网

treeview节点展开与收缩都要调用note.do的Action,
请问有什么办法让节点展开时调用,收缩时不调用(或者两者调用不同的方法)
以下是js代码,其中toggle是展开与收缩都会触发,谢谢
复制代码
  1. <script type="text/javascript">
  2.     $(document).ready(function(){ 
  3.         $("#browser").treeview({ 
  4.             toggle: function() { 
  5.                 var ULS = this.getElementsByTagName('ul'); 
  6.                 var UL = null; 
  7.                 if (ULS.length > 0) { 
  8.                     UL = ULS[0]; 
  9.                     $.get("note.do" 
  10.                         ,{noteid:this.id} 
  11.                         ,function call(data) { 
  12.                             UL.innerHTML = ""; 
  13.                             var s = ''; 
  14.                             var list = eval('(' + data + ')').note; 
  15.                             $.each(list, function(i, note) { 
  16.                                  s += '<li class="closed" id="' + note.noteid + '">'; 
  17.                                  s += '・<A href="#">' + note.noteid + '</A>'; 
  18.                                  s += '<ul><li>nothing</li></ul>' 
  19.                                  s += '</li>'; 
  20.                              }); 
  21.                              var adds = $(s).prependTo(UL); 
  22.                              $("#browser").treeview({ 
  23.                                  add: adds 
  24.                              }); 
  25.                         }); 
  26.                     } 
  27.                } 
  28.            })
  29.     });
  30. </script>
  31.   

[ 此帖被lixuezhen在2009-11-05 14:56重新编辑 ]

作者: lixuezhen   发布时间: 2009-11-05

可以参考jquery中的toggle    

如果你引用的treeview中的toggle和jquery一样的话

jquery中的说明  :具体查jquery帮助文档
每次点击后依次调用函数。
如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数,如果有更多函数,则再次触发,直到最后一个。随后的每次点击都重复对这几个函数的轮番调用。

可以使用unbind("click")来删除。

作者: ldhh   发布时间: 2009-11-05

谢谢楼上的提点,我去看看研究研究
现在出现新的问题啦:
复制代码
  1. <script type="text/javascript">
  2.    $(document).ready(function(){
  3.       $("#browser").treeview();
  4.       $("li").toggle(function() {}, function(){});
  5.    });

应该我是要一层一层加的,红色部分只能在第一层<li>时才能触发,第二层就不能触发啦
问下有没有别的写法?(研究了很久也没头绪)
谢谢!

作者: lixuezhen   发布时间: 2009-11-05

试一我修改的,这个必须是jquery1.3以上的版本才可以

<script type="text/javascript">
   $(document).ready(function(){
      $("#browser").treeview();
      $("li").live("click",function(){
             $(this).toggle(function() {}, function(){});            
      })

   });

作者: ldhh   发布时间: 2009-11-06

相关阅读 更多