Jstree - 需要结合两个java脚本的正确语法是什么?

时间:2015-07-29 14:25:54

标签: javascript jstree

我知道javascript非常有限。这是开始篇:

<ul class="nav">
 <li class=""> <!---------add class to here---->
   <a href="default.asp">Home</a> <!-------- when this is clicked---->
   <ul>
       <li><a href="news.asp">link 1</a></li><!-------- but NOT when this is clicked----->
       <li><a href="news.asp">link 2</a></li>
       <li><a href="news.asp">link 3</a></li>
   <ul>
 </li>
 <li><a href="news.asp">News</a></li>
 <li><a href="contact.asp">Contact</a></li>
 <li><a href="about.asp">About</a></li>
</ul>

现在我需要添加两段代码,这是第一段:

$("#jstree").jstree()

这是第二个:

<script>
$("#jstree").jstree().bind('ready.jstree', function(event, data) {
    $("#jstree").jstree('select_node', '{{concept_id}}');
    $("#jstree").jstree('open_node', '{{concept_id}}', function(e, d) {
        for (var i = 0; i < e.parents.length; i++) {
            $("#jstree").jstree('open_node', e.parents[i]);
        };
    });

});
</script>

第一个块允许我在页面加载时打开树到特定节点。第二个块允许我的链接可以点击,因为它们不是。

如何将.bind()和.on()与正确的语法结合起来?

1 个答案:

答案 0 :(得分:0)

    var jsTree = $("#jstree");
var PageLoadlock = false;
jsTree.jstree().bind('ready.jstree', function(event, data) {
                        PageLoadlock = true;
                        jsTree.jstree('select_node', '{{concept_id}}');
                        jsTree.jstree('open_node', '{{concept_id}}', function(e, d) {
                        for (var i = 0; i < e.parents.length; i++) {
                            $("#jstree").jstree('open_node', e.parents[i]);
                        };
                    });
                 }).on("select_node.jstree", function(e, data) {
                        if (PageLoadlock) { PageLoadlock = !PageLoadlock; return}
                        document.location = data.instance.get_node(data.node, true).children('a').attr('href');
                    });

类似这样的事情,在.jstree()。​​bind之前或之后添加.jstree()。​​on,订单不计算。

<强>更新 如果以编程方式生成事件,则为slect_node.jstree添加锁定