3

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

理想的结果是:当我点击jstree中的item时,item的内容会作为参数传递给一个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>

非常感谢。

4

2 回答 2

5

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

如果您的节点(li)具有“node_1234”形式的 id,则:

<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>
于 2010-02-12T14:27:57.497 回答
0
.delegate("a","click", function(e) {
         console.log($(this).parent().attr("id").split("_")[1]); //get ID of clicked node
  })
于 2011-06-16T12:26:11.553 回答