我知道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()与正确的语法结合起来?
答案 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添加锁定