如何将click事件添加到jstree的(jQuery插件)异步列表?

时间:2010-02-12 13:36:18

标签: php javascript jquery jstree

我想将click事件添加到jstree的异步列表项中。

理想的结果是:当我点击jstree中的项目时,项目的内容将作为参数转移到sql查询,然后执行查询并在同一页面中显示结果集或在另一页。

虽然我不知道如何实现它。我在jquery.tree.js中找到了以下代码。我想我应该修改这个事件。但我不知道怎么做。你能看到代码并给我一些建议或指导吗?

$("#" + this.container.attr("id") + " li a")
 .live("click.jstree", function (event) { // WHEN CLICK IS ON THE TEXT OR ICON
  if(event.which && event.which == 3) return true;
  if(_this.locked) {
   event.preventDefault(); 
   event.target.blur();
   return _this.error("LOCKED");
  }
  _this.select_branch.apply(_this, [event.target, event.ctrlKey || _this.settings.rules.multiple == "on"]);
  if(_this.inp) { _this.inp.blur(); }
   event.preventDefault();
   event.target.blur();
   return false;
  })

页面代码:

<script type="text/javascript" >
    $(function () { 
        $("#async_json_1").tree({
            data : { 
                type : "json",
                opts : {
                    url : "twodimen.php"
                }
            },
            callback:{
                onselect: function(node,tree){

                }
            }
        });
    });
</script>

非常感谢。

2 个答案:

答案 0 :(得分:5)

您可以使用回调方法onselect,这通常在单击节点时发生(即使您也可以通过脚本选择它)

如果你的节点(li)的id为“node_1234”,那么:

<script type="text/javascript" >
 $(function () { 
  $("#async_json_1").tree({
   data : { 
    type : "json",
    opts : {
     url : "twodimen.php"
    }
   },
   callback: {
      onselect: function(node, tree) {
         var id = $(node).attr("id").split("_")[1]; // that is 1234
         $.ajax({
            url: "your/url",
            data: "id="+id,
            success: function(data){
               alert("Great");
            }
         });
      }
   }
  });
 });
</script>

我刚才意识到,还有一种更简单的方法可以满足您的需求:

<script type="text/javascript" >
 $(function () { 
  $("#async_json_1").tree({
   data : { 
    type : "json",
    opts : {
     url : "twodimen.php"
    }
   }
  });
  $(".tree a").live("click", function(e) {
     // your code here
  }) 
 });
</script>

答案 1 :(得分:0)

.delegate("a","click", function(e) {
         console.log($(this).parent().attr("id").split("_")[1]); //get ID of clicked node
  })