jstree:无法通过属性找到元素

jstree: Cannot find element via an attribute

我正在尝试根据我创建的属性 (db-id) select 一个节点,但是我已经测试了很多选项,但我仍然没有得到该节点。即使试图通过标签 "li" 的 "id" 获取节点,它仍然不起作用。

$(document).ready(function(){
$('#jstree').jstree();

$('#jstree').on('ready.jstree', function (e, data) {
    x= $('#jstree').jstree(true).get_node('j1_1');
    alert(x[0].id);
...

在我的示例中,x 为空。好像是因为生成了jstree,没有识别每一个"li"的动态属性。当然,我尝试了更多选项,例如:

node = $('#jstree').find("li[id='j1_1']").closest('li');
node = $('#jstree').find("li[id='j1_1']");
node = $('#jstree.jstree-node').find("li[id=j1_1]");

但没有什么好结果。下面是生成的jstree的一个小结构。

<div id="jstree">
<ul>
    <li db-id="1459">AAA004 - low-frequency amplifier
        <ul>
            <li db-id="1460">AAA005 - power amplifier</li>
            <li db-id="1461">AAA006 - voltage amplifier
                <ul>
                    <li db-id="1462">AAA007 - differential amplifier
                        <ul>
                            <li db-id="1463">AAA008 - operational amplifier</li>
                            <li db-id="1464">AAA009 - AC-coupled amplifier</li>
                        </ul>
                    </li>
                    <li db-id="1465">AAA010 - single-sided amplifier</li>
                </ul>
            </li>
        </ul>
    </li>
    <li db-id="1466">AAA011 - radio frequency amplifier</li>
    <li db-id="1467">AAA012 - wideband amplifier</li>
</ul>
</div>

** 更新**

上面的树是我测试的例子。

在没有 $('#jstree').jstree() 的情况下使用!!!...

x= $('#jstree').find("li[db-id='1462']");
alert(x[0].id);

但使用 $('#jstree').jstree() 进行初始化,上面的代码仅适用于第一级,但对其余级别不再有效。话虽如此,在示例中,db-id="1459" 会起作用,但 db-id="1460" 不会起作用!!!

提前致谢!

jsTree 不会初始化 DOM 中的所有节点。 只有第一层,打开父节点后DOM会加载一个子节点

首先你只能得到ID 1459,如果你打开它,那么你可以得到ID 1459、1460和1461。如果你想改变CSS,你可以使用open_node.jstree 事件:

$('#jstree').bind("open_node.jstree", function (event, data) { ... }).jstree();